home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 …ember: Reference Library / Apple Developer Reference Library (December 1999) (Disk 1).iso / mac / Technical Documentation / Develop / develop Issue 24 / develop Issue 24 code / Scriptable Database 1.0a15.sea / Scriptable Database 1.0a15 / Base / ListTemplate.h < prev    next >
MacBinary  |  1996-02-19  |  20.4 KB  |  [TEXT/CWIE]

open in: MacOS 8.1     |     Win98     |     DOS

browse contents    |     view JSON data     |     view as text


This file was processed as: MacBinary (archive/macBinary).

ConfidenceProgramDetectionMatch TypeSupport
10% dexvert MacBinary (archive/macBinary) fallback Supported
1% dexvert Text File (text/txt) fallback Supported
100% file MacBinary II, inited, Mon Feb 19 22:23:12 1996, modified Mon Feb 19 22:23:12 1996, creator 'CWIE', type ASCII, 20213 bytes "ListTemplate.h" , at 0x4f75 410 bytes resource default (weak)
99% file data default
74% TrID Macintosh plain text (MacBinary) default
25% TrID MacBinary 2 default (weak)
100% siegfried fmt/1762 MacBinary (II) default
100% lsar MacBinary default


id metadata
keyvalue
macFileType[TEXT]
macFileCreator[CWIE]



hex view
+--------+-------------------------+-------------------------+--------+--------+
|00000000| 00 0e 4c 69 73 74 54 65 | 6d 70 6c 61 74 65 2e 68 |..ListTe|mplate.h|
|00000010| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000020| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000030| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000040| 00 54 45 58 54 43 57 49 | 45 01 00 00 00 00 00 00 |.TEXTCWI|E.......|
|00000050| 00 00 00 00 00 4e f5 00 | 00 01 9a ad 4e ef 20 ad |.....N..|....N. .|
|00000060| 4e ef 20 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |N. .....|........|
|00000070| 00 00 00 00 00 00 00 00 | 00 00 81 81 44 93 00 00 |........|....D...|
|00000080| 23 70 72 61 67 6d 61 20 | 6f 6e 63 65 0d 0d 23 69 |#pragma |once..#i|
|00000090| 66 6e 64 65 66 20 5f 5f | 4c 49 53 54 54 45 4d 50 |fndef __|LISTTEMP|
|000000a0| 4c 41 54 45 5f 5f 0d 23 | 64 65 66 69 6e 65 20 5f |LATE__.#|define _|
|000000b0| 5f 4c 49 53 54 54 45 4d | 50 4c 41 54 45 5f 5f 0d |_LISTTEM|PLATE__.|
|000000c0| 0d 23 64 65 66 69 6e 65 | 20 44 45 42 55 47 50 52 |.#define| DEBUGPR|
|000000d0| 45 45 4d 50 54 49 56 45 | 4c 4f 43 4b 20 31 0d 0d |EEMPTIVE|LOCK 1..|
|000000e0| 2f 2f 0d 2f 2f 20 46 6f | 72 20 27 6e 69 6c 27 0d |//.// Fo|r 'nil'.|
|000000f0| 2f 2f 0d 23 69 6e 63 6c | 75 64 65 20 3c 54 79 70 |//.#incl|ude <Typ|
|00000100| 65 73 2e 68 3e 0d 0d 2f | 2f 0d 2f 2f 20 54 68 69 |es.h>../|/.// Thi|
|00000110| 73 20 69 73 20 68 6f 77 | 20 6d 61 6e 79 20 65 6c |s is how| many el|
|00000120| 65 6d 65 6e 74 73 20 6f | 75 72 20 6c 69 73 74 20 |ements o|ur list |
|00000130| 67 72 6f 77 73 20 62 79 | 20 65 76 65 72 79 20 74 |grows by| every t|
|00000140| 69 6d 65 20 77 65 20 72 | 75 6e 0d 2f 2f 20 6f 75 |ime we r|un.// ou|
|00000150| 74 20 6f 66 20 73 70 61 | 63 65 2e 20 20 57 65 20 |t of spa|ce. We |
|00000160| 63 6f 75 6c 64 20 70 6f | 74 65 6e 74 69 61 6c 6c |could po|tentiall|
|00000170| 79 20 62 65 20 61 20 6c | 6f 74 20 6d 6f 72 65 20 |y be a l|ot more |
|00000180| 69 6e 74 65 6c 6c 69 67 | 65 6e 74 0d 2f 2f 20 61 |intellig|ent.// a|
|00000190| 62 6f 75 74 20 6f 75 72 | 20 67 72 6f 77 69 6e 67 |bout our| growing|
|000001a0| 20 62 65 68 61 76 69 6f | 72 2e 0d 2f 2f 0d 2f 2f | behavio|r..//.//|
|000001b0| 20 6e 2e 62 2e 20 43 75 | 72 72 65 6e 74 6c 79 20 | n.b. Cu|rrently |
|000001c0| 74 68 65 73 65 20 6c 69 | 73 74 73 20 6e 65 76 65 |these li|sts neve|
|000001d0| 72 20 74 72 69 6d 2c 20 | 77 68 69 63 68 20 63 6f |r trim, |which co|
|000001e0| 75 6c 64 20 62 65 20 62 | 61 64 2e 0d 2f 2f 0d 23 |uld be b|ad..//.#|
|000001f0| 64 65 66 69 6e 65 20 6b | 41 6c 6c 6f 63 61 74 69 |define k|Allocati|
|00000200| 6f 6e 43 68 75 6e 6b 09 | 09 09 33 32 0d 0d 2f 2f |onChunk.|..32..//|
|00000210| 0d 2f 2f 20 57 65 20 75 | 73 75 61 6c 6c 79 20 64 |.// We u|sually d|
|00000220| 6f 6e 27 74 20 68 61 76 | 65 20 6d 6f 72 65 20 74 |on't hav|e more t|
|00000230| 68 61 6e 20 74 77 6f 20 | 69 74 65 72 61 74 6f 72 |han two |iterator|
|00000240| 73 20 6f 6e 20 61 20 6c | 69 73 74 2c 20 73 6f 0d |s on a l|ist, so.|
|00000250| 2f 2f 20 77 65 27 6c 6c | 20 6f 6e 6c 79 20 61 6c |// we'll| only al|
|00000260| 6c 6f 63 61 74 65 20 73 | 70 61 63 65 20 66 6f 72 |locate s|pace for|
|00000270| 20 74 68 65 20 69 74 65 | 72 61 74 6f 72 20 6c 69 | the ite|rator li|
|00000280| 73 74 20 74 77 6f 20 65 | 6c 65 6d 65 6e 74 73 0d |st two e|lements.|
|00000290| 2f 2f 20 61 74 20 61 20 | 74 69 6d 65 2e 0d 2f 2f |// at a |time..//|
|000002a0| 0d 23 64 65 66 69 6e 65 | 20 6b 49 74 65 72 4c 69 |.#define| kIterLi|
|000002b0| 73 74 41 6c 6c 6f 63 61 | 74 69 6f 6e 43 68 75 6e |stAlloca|tionChun|
|000002c0| 6b 09 32 0d 0d 74 79 70 | 65 64 65 66 20 42 6f 6f |k.2..typ|edef Boo|
|000002d0| 6c 65 61 6e 20 28 2a 4c | 69 73 74 45 6c 65 6d 65 |lean (*L|istEleme|
|000002e0| 6e 74 43 6f 6d 70 61 72 | 65 50 72 6f 63 50 74 72 |ntCompar|eProcPtr|
|000002f0| 29 28 63 6f 6e 73 74 20 | 63 68 61 72 2a 20 69 74 |)(const |char* it|
|00000300| 65 6d 31 2c 20 63 6f 6e | 73 74 20 63 68 61 72 2a |em1, con|st char*|
|00000310| 20 69 74 65 6d 32 29 3b | 0d 0d 0d 63 6c 61 73 73 | item2);|...class|
|00000320| 20 54 41 62 73 74 72 61 | 63 74 4c 69 73 74 49 74 | TAbstra|ctListIt|
|00000330| 65 72 61 74 6f 72 3b 0d | 0d 2f 2f 3d 3d 3d 3d 3d |erator;.|.//=====|
|00000340| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00000350| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00000360| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00000370| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00000380| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 0d 2f 2f 20 43 |========|===.// C|
|00000390| 4c 41 53 53 20 54 4c 69 | 73 74 53 74 6f 72 61 67 |LASS TLi|stStorag|
|000003a0| 65 0d 2f 2f 0d 2f 2f 20 | 54 68 69 73 20 63 6c 61 |e.//.// |This cla|
|000003b0| 73 73 20 69 73 20 66 6f | 72 20 75 73 65 20 62 79 |ss is fo|r use by|
|000003c0| 20 74 68 65 20 6c 69 73 | 74 20 74 65 6d 70 6c 61 | the lis|t templa|
|000003d0| 74 65 2c 20 61 6e 64 20 | 69 73 6e 27 74 20 69 6e |te, and |isn't in|
|000003e0| 74 65 6e 64 65 64 20 66 | 6f 72 20 64 69 72 65 63 |tended f|or direc|
|000003f0| 74 20 75 73 65 2e 0d 2f | 2f 3d 3d 3d 3d 3d 3d 3d |t use../|/=======|
|00000400| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00000410| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00000420| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00000430| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00000440| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 0d 0d 63 6c 61 73 73 |========|=..class|
|00000450| 20 54 4c 69 73 74 53 74 | 6f 72 61 67 65 0d 7b 0d | TListSt|orage.{.|
|00000460| 09 2f 2f 0d 09 2f 2f 20 | 4f 6e 6c 79 20 54 41 62 |.//..// |Only TAb|
|00000470| 73 74 72 61 63 74 4c 69 | 73 74 49 74 65 72 61 74 |stractLi|stIterat|
|00000480| 6f 72 73 20 6d 61 79 20 | 61 64 64 20 6f 72 20 72 |ors may |add or r|
|00000490| 65 6d 6f 76 65 20 74 68 | 65 6d 73 65 6c 76 65 73 |emove th|emselves|
|000004a0| 0d 09 2f 2f 20 74 6f 20 | 6f 75 72 20 69 74 65 72 |..// to |our iter|
|000004b0| 61 74 6f 72 20 6c 69 73 | 74 0d 09 2f 2f 0d 09 66 |ator lis|t..//..f|
|000004c0| 72 69 65 6e 64 20 63 6c | 61 73 73 20 54 41 62 73 |riend cl|ass TAbs|
|000004d0| 74 72 61 63 74 4c 69 73 | 74 49 74 65 72 61 74 6f |tractLis|tIterato|
|000004e0| 72 3b 0d 09 0d 70 75 62 | 6c 69 63 3a 0d 09 54 4c |r;...pub|lic:..TL|
|000004f0| 69 73 74 53 74 6f 72 61 | 67 65 28 55 49 6e 74 33 |istStora|ge(UInt3|
|00000500| 32 20 69 74 65 6d 53 69 | 7a 65 29 20 3a 0d 09 09 |2 itemSi|ze) :...|
|00000510| 66 4c 69 73 74 44 61 74 | 61 28 6e 69 6c 29 2c 0d |fListDat|a(nil),.|
|00000520| 09 09 66 49 74 65 6d 53 | 69 7a 65 28 69 74 65 6d |..fItemS|ize(item|
|00000530| 53 69 7a 65 29 2c 0d 09 | 09 66 49 74 65 6d 73 49 |Size),..|.fItemsI|
|00000540| 6e 4c 69 73 74 28 30 29 | 2c 0d 09 09 66 53 70 61 |nList(0)|,...fSpa|
|00000550| 63 65 52 65 73 65 72 76 | 65 64 28 30 29 2c 0d 23 |ceReserv|ed(0),.#|
|00000560| 69 66 20 44 45 42 55 47 | 50 52 45 45 4d 50 54 49 |if DEBUG|PREEMPTI|
|00000570| 56 45 4c 4f 43 4b 0d 09 | 09 66 52 65 61 64 4c 6f |VELOCK..|.fReadLo|
|00000580| 63 6b 73 28 30 29 2c 0d | 09 09 66 57 72 69 74 65 |cks(0),.|..fWrite|
|00000590| 4c 6f 63 6b 73 28 30 29 | 2c 0d 23 65 6e 64 69 66 |Locks(0)|,.#endif|
|000005a0| 0d 09 09 66 49 74 65 72 | 61 74 6f 72 4c 69 73 74 |...fIter|atorList|
|000005b0| 28 6e 69 6c 29 2c 0d 09 | 09 66 4e 75 6d 62 65 72 |(nil),..|.fNumber|
|000005c0| 4f 66 49 74 65 72 61 74 | 6f 72 73 28 30 29 2c 0d |OfIterat|ors(0),.|
|000005d0| 09 09 66 49 74 65 72 61 | 74 6f 72 4c 69 73 74 52 |..fItera|torListR|
|000005e0| 65 73 65 72 76 65 64 53 | 70 61 63 65 28 30 29 20 |eservedS|pace(0) |
|000005f0| 7b 7d 0d 09 0d 09 54 4c | 69 73 74 53 74 6f 72 61 |{}....TL|istStora|
|00000600| 67 65 28 55 49 6e 74 33 | 32 20 69 74 65 6d 53 69 |ge(UInt3|2 itemSi|
|00000610| 7a 65 2c 20 55 49 6e 74 | 33 32 20 69 6e 69 74 69 |ze, UInt|32 initi|
|00000620| 61 6c 49 74 65 6d 53 70 | 61 63 65 29 20 3a 0d 09 |alItemSp|ace) :..|
|00000630| 09 66 4c 69 73 74 44 61 | 74 61 28 6e 69 6c 29 2c |.fListDa|ta(nil),|
|00000640| 0d 09 09 66 49 74 65 6d | 53 69 7a 65 28 69 74 65 |...fItem|Size(ite|
|00000650| 6d 53 69 7a 65 29 2c 0d | 09 09 66 49 74 65 6d 73 |mSize),.|..fItems|
|00000660| 49 6e 4c 69 73 74 28 30 | 29 2c 0d 09 09 66 53 70 |InList(0|),...fSp|
|00000670| 61 63 65 52 65 73 65 72 | 76 65 64 28 30 29 2c 0d |aceReser|ved(0),.|
|00000680| 23 69 66 20 44 45 42 55 | 47 50 52 45 45 4d 50 54 |#if DEBU|GPREEMPT|
|00000690| 49 56 45 4c 4f 43 4b 0d | 09 09 66 52 65 61 64 4c |IVELOCK.|..fReadL|
|000006a0| 6f 63 6b 73 28 30 29 2c | 0d 09 09 66 57 72 69 74 |ocks(0),|...fWrit|
|000006b0| 65 4c 6f 63 6b 73 28 30 | 29 2c 0d 23 65 6e 64 69 |eLocks(0|),.#endi|
|000006c0| 66 0d 09 09 66 49 74 65 | 72 61 74 6f 72 4c 69 73 |f...fIte|ratorLis|
|000006d0| 74 28 6e 69 6c 29 2c 0d | 09 09 66 4e 75 6d 62 65 |t(nil),.|..fNumbe|
|000006e0| 72 4f 66 49 74 65 72 61 | 74 6f 72 73 28 30 29 2c |rOfItera|tors(0),|
|000006f0| 0d 09 09 66 49 74 65 72 | 61 74 6f 72 4c 69 73 74 |...fIter|atorList|
|00000700| 52 65 73 65 72 76 65 64 | 53 70 61 63 65 28 30 29 |Reserved|Space(0)|
|00000710| 20 7b 20 74 68 69 73 2d | 3e 49 6e 73 75 72 65 41 | { this-|>InsureA|
|00000720| 64 65 71 75 61 74 65 53 | 70 61 63 65 28 69 6e 69 |dequateS|pace(ini|
|00000730| 74 69 61 6c 49 74 65 6d | 53 70 61 63 65 29 3b 20 |tialItem|Space); |
|00000740| 7d 0d 09 0d 09 54 4c 69 | 73 74 53 74 6f 72 61 67 |}....TLi|stStorag|
|00000750| 65 28 63 6f 6e 73 74 20 | 54 4c 69 73 74 53 74 6f |e(const |TListSto|
|00000760| 72 61 67 65 26 20 63 6f | 70 79 46 72 6f 6d 29 3b |rage& co|pyFrom);|
|00000770| 0d 09 0d 09 7e 54 4c 69 | 73 74 53 74 6f 72 61 67 |....~TLi|stStorag|
|00000780| 65 28 29 3b 0d 09 0d 09 | 2f 2f 0d 09 2f 2f 20 53 |e();....|//..// S|
|00000790| 69 6d 70 6c 65 20 6c 69 | 73 74 20 61 63 63 65 73 |imple li|st acces|
|000007a0| 73 0d 09 2f 2f 0d 09 42 | 6f 6f 6c 65 61 6e 09 09 |s..//..B|oolean..|
|000007b0| 09 09 09 45 6d 70 74 79 | 28 29 20 63 6f 6e 73 74 |...Empty|() const|
|000007c0| 09 09 09 09 09 09 09 09 | 09 7b 20 72 65 74 75 72 |........|.{ retur|
|000007d0| 6e 20 28 74 68 69 73 2d | 3e 49 74 65 6d 73 49 6e |n (this-|>ItemsIn|
|000007e0| 4c 69 73 74 28 29 20 3d | 3d 20 30 29 3b 20 7d 0d |List() =|= 0); }.|
|000007f0| 09 55 49 6e 74 33 32 09 | 09 09 09 09 49 74 65 6d |.UInt32.|....Item|
|00000800| 73 49 6e 4c 69 73 74 28 | 29 20 63 6f 6e 73 74 09 |sInList(|) const.|
|00000810| 09 09 09 09 09 09 09 7b | 20 72 65 74 75 72 6e 20 |.......{| return |
|00000820| 66 49 74 65 6d 73 49 6e | 4c 69 73 74 3b 20 7d 0d |fItemsIn|List; }.|
|00000830| 0d 09 2f 2f 0d 09 2f 2f | 20 50 72 69 6d 61 72 79 |..//..//| Primary|
|00000840| 20 6c 69 73 74 2d 6d 61 | 6e 69 70 75 6c 61 74 69 | list-ma|nipulati|
|00000850| 6f 6e 20 61 6e 64 20 69 | 74 65 6d 20 61 63 63 65 |on and i|tem acce|
|00000860| 73 73 20 41 50 49 3a 0d | 09 2f 2f 0d 09 54 4c 69 |ss API:.|.//..TLi|
|00000870| 73 74 53 74 6f 72 61 67 | 65 2a 09 09 09 43 6c 6f |stStorag|e*...Clo|
|00000880| 6e 65 28 29 20 63 6f 6e | 73 74 3b 0d 09 0d 09 2f |ne() con|st;..../|
|00000890| 2f 0d 09 2f 2f 20 41 64 | 64 20 61 6e 20 69 74 65 |/..// Ad|d an ite|
|000008a0| 6d 20 74 6f 20 74 68 65 | 20 6c 69 73 74 20 69 6e |m to the| list in|
|000008b0| 20 6e 6f 20 70 61 72 74 | 69 63 75 6c 61 72 20 6f | no part|icular o|
|000008c0| 72 64 65 72 20 28 70 75 | 74 73 20 6e 65 77 0d 09 |rder (pu|ts new..|
|000008d0| 2f 2f 20 69 74 65 6d 20 | 69 6e 20 75 73 69 6e 67 |// item |in using|
|000008e0| 20 74 68 65 20 66 61 73 | 74 65 73 74 20 69 6e 73 | the fas|test ins|
|000008f0| 65 72 74 69 6f 6e 20 61 | 76 61 69 6c 61 62 6c 65 |ertion a|vailable|
|00000900| 29 0d 09 2f 2f 0d 09 76 | 6f 69 64 09 09 09 09 09 |)..//..v|oid.....|
|00000910| 41 64 64 28 63 6f 6e 73 | 74 20 63 68 61 72 2a 20 |Add(cons|t char* |
|00000920| 65 6c 65 6d 65 6e 74 41 | 64 64 72 65 73 73 29 3b |elementA|ddress);|
|00000930| 0d 09 42 6f 6f 6c 65 61 | 6e 09 09 09 09 09 52 65 |..Boolea|n.....Re|
|00000940| 6d 6f 76 65 28 63 6f 6e | 73 74 20 63 68 61 72 2a |move(con|st char*|
|00000950| 2c 20 4c 69 73 74 45 6c | 65 6d 65 6e 74 43 6f 6d |, ListEl|ementCom|
|00000960| 70 61 72 65 50 72 6f 63 | 50 74 72 20 63 6f 6d 70 |pareProc|Ptr comp|
|00000970| 61 72 65 50 72 6f 63 29 | 3b 0d 09 0d 09 2f 2f 0d |areProc)|;....//.|
|00000980| 09 2f 2f 20 6e 2e 62 2e | 09 49 6e 73 65 72 74 69 |.// n.b.|.Inserti|
|00000990| 6e 67 20 4e 20 69 74 65 | 6d 73 20 61 74 20 74 68 |ng N ite|ms at th|
|000009a0| 65 20 62 65 67 69 6e 6e | 69 6e 67 20 6f 66 20 74 |e beginn|ing of t|
|000009b0| 68 65 20 6c 69 73 74 20 | 69 73 20 4f 28 4e 5e 32 |he list |is O(N^2|
|000009c0| 29 0d 09 2f 2f 09 09 49 | 6e 73 65 72 74 69 6e 67 |)..//..I|nserting|
|000009d0| 20 4e 20 69 74 65 6d 73 | 20 61 74 20 74 68 65 20 | N items| at the |
|000009e0| 65 6e 64 20 6f 66 20 74 | 68 65 20 6c 69 73 74 20 |end of t|he list |
|000009f0| 69 73 20 4f 28 4e 29 0d | 09 2f 2f 09 09 49 6e 73 |is O(N).|.//..Ins|
|00000a00| 65 72 74 69 6e 67 20 4e | 20 69 74 65 6d 73 20 61 |erting N| items a|
|00000a10| 74 20 74 68 65 20 65 6e | 64 20 6f 66 20 74 68 65 |t the en|d of the|
|00000a20| 20 6c 69 73 74 20 61 6e | 64 20 72 65 76 65 72 73 | list an|d revers|
|00000a30| 69 6e 67 20 74 68 65 69 | 72 20 6f 72 64 65 72 20 |ing thei|r order |
|00000a40| 69 73 20 61 6c 73 6f 20 | 4f 28 4e 29 2e 0d 09 2f |is also |O(N).../|
|00000a50| 2f 09 0d 09 76 6f 69 64 | 09 09 09 09 09 49 6e 73 |/...void|.....Ins|
|00000a60| 65 72 74 41 74 42 65 67 | 69 6e 6e 69 6e 67 28 63 |ertAtBeg|inning(c|
|00000a70| 6f 6e 73 74 20 63 68 61 | 72 2a 20 65 6c 65 6d 65 |onst cha|r* eleme|
|00000a80| 6e 74 41 64 64 72 65 73 | 73 29 3b 0d 09 76 6f 69 |ntAddres|s);..voi|
|00000a90| 64 09 09 09 09 09 49 6e | 73 65 72 74 41 74 45 6e |d.....In|sertAtEn|
|00000aa0| 64 28 63 6f 6e 73 74 20 | 63 68 61 72 2a 20 65 6c |d(const |char* el|
|00000ab0| 65 6d 65 6e 74 41 64 64 | 72 65 73 73 29 3b 0d 0d |ementAdd|ress);..|
|00000ac0| 09 2f 2f 0d 09 2f 2f 20 | 6e 2e 62 2e 09 52 65 6d |.//..// |n.b..Rem|
|00000ad0| 6f 76 69 6e 67 20 4e 20 | 69 74 65 6d 73 20 66 72 |oving N |items fr|
|00000ae0| 6f 6d 20 74 68 65 20 62 | 65 67 69 6e 6e 69 6e 67 |om the b|eginning|
|00000af0| 20 6f 66 20 74 68 65 20 | 6c 69 73 74 20 69 73 20 | of the |list is |
|00000b00| 4f 28 4e 5e 32 29 0d 09 | 2f 2f 09 09 52 65 6d 6f |O(N^2)..|//..Remo|
|00000b10| 76 69 6e 67 20 4e 20 69 | 74 65 6d 73 20 66 72 6f |ving N i|tems fro|
|00000b20| 6d 20 74 68 65 20 65 6e | 64 20 6f 66 20 74 68 65 |m the en|d of the|
|00000b30| 20 6c 69 73 74 20 69 73 | 20 4f 28 4e 29 0d 09 2f | list is| O(N)../|
|00000b40| 2f 0d 09 76 6f 69 64 09 | 09 09 09 09 52 65 6d 6f |/..void.|....Remo|
|00000b50| 76 65 46 72 6f 6d 42 65 | 67 69 6e 6e 69 6e 67 28 |veFromBe|ginning(|
|00000b60| 29 3b 0d 09 76 6f 69 64 | 09 09 09 09 09 52 65 6d |);..void|.....Rem|
|00000b70| 6f 76 65 46 72 6f 6d 45 | 6e 64 28 29 3b 0d 0d 09 |oveFromE|nd();...|
|00000b80| 2f 2f 0d 09 2f 2f 20 4c | 69 73 74 20 61 63 63 65 |//..// L|ist acce|
|00000b90| 73 73 6f 72 73 0d 09 2f | 2f 09 0d 09 76 6f 69 64 |ssors../|/...void|
|00000ba0| 09 09 09 09 09 46 69 72 | 73 74 49 74 65 6d 28 63 |.....Fir|stItem(c|
|00000bb0| 68 61 72 2a 20 63 6f 70 | 79 54 6f 42 75 66 66 65 |har* cop|yToBuffe|
|00000bc0| 72 29 20 63 6f 6e 73 74 | 3b 0d 09 76 6f 69 64 09 |r) const|;..void.|
|00000bd0| 09 09 09 09 4c 61 73 74 | 49 74 65 6d 28 63 68 61 |....Last|Item(cha|
|00000be0| 72 2a 20 63 6f 70 79 54 | 6f 42 75 66 66 65 72 29 |r* copyT|oBuffer)|
|00000bf0| 20 63 6f 6e 73 74 3b 0d | 0d 09 2f 2f 0d 09 2f 2f | const;.|..//..//|
|00000c00| 20 4d 69 73 63 20 6c 69 | 73 74 20 6d 61 6e 69 70 | Misc li|st manip|
|00000c10| 75 6c 61 74 69 6f 6e 0d | 09 2f 2f 0d 09 76 6f 69 |ulation.|.//..voi|
|00000c20| 64 09 09 09 09 09 52 65 | 76 65 72 73 65 4f 72 64 |d.....Re|verseOrd|
|00000c30| 65 72 4f 66 4c 69 73 74 | 28 63 68 61 72 2a 20 74 |erOfList|(char* t|
|00000c40| 65 6d 70 42 75 66 66 65 | 72 29 3b 0d 09 76 6f 69 |empBuffe|r);..voi|
|00000c50| 64 09 09 09 09 09 4d 61 | 6b 65 45 6d 70 74 79 28 |d.....Ma|keEmpty(|
|00000c60| 29 3b 0d 0d 09 2f 2f 0d | 09 2f 2f 20 41 63 63 65 |);...//.|.// Acce|
|00000c70| 73 73 20 6c 6f 63 6b 73 | 20 66 6f 72 20 70 72 65 |ss locks| for pre|
|00000c80| 65 6d 70 74 69 76 65 20 | 73 6f 66 74 77 61 72 65 |emptive |software|
|00000c90| 20 28 73 65 65 20 63 6f | 6d 6d 65 6e 74 20 62 65 | (see co|mment be|
|00000ca0| 6c 6f 77 29 0d 09 2f 2f | 0d 09 76 6f 69 64 09 09 |low)..//|..void..|
|00000cb0| 09 09 09 4c 6f 63 6b 46 | 6f 72 52 65 61 64 69 6e |...LockF|orReadin|
|00000cc0| 67 28 29 20 63 6f 6e 73 | 74 3b 0d 09 76 6f 69 64 |g() cons|t;..void|
|00000cd0| 09 09 09 09 09 52 65 6c | 69 6e 71 75 69 73 68 52 |.....Rel|inquishR|
|00000ce0| 65 61 64 4c 6f 63 6b 28 | 29 20 63 6f 6e 73 74 3b |eadLock(|) const;|
|00000cf0| 0d 09 76 6f 69 64 09 09 | 09 09 09 4c 6f 63 6b 46 |..void..|...LockF|
|00000d00| 6f 72 57 72 69 74 69 6e | 67 28 29 3b 0d 09 76 6f |orWritin|g();..vo|
|00000d10| 69 64 09 09 09 09 09 52 | 65 6c 69 6e 71 75 69 73 |id.....R|elinquis|
|00000d20| 68 57 72 69 74 65 4c 6f | 63 6b 28 29 3b 0d 09 0d |hWriteLo|ck();...|
|00000d30| 09 2f 2f 0d 09 2f 2f 20 | 4e 6f 74 20 70 72 65 65 |.//..// |Not pree|
|00000d40| 6d 70 74 69 76 65 2d 73 | 61 66 65 20 69 66 20 63 |mptive-s|afe if c|
|00000d50| 61 6c 6c 65 64 20 64 69 | 72 65 63 74 6c 79 3b 20 |alled di|rectly; |
|00000d60| 68 6f 77 65 76 65 72 2c | 20 4f 4e 4c 59 0d 09 2f |however,| ONLY../|
|00000d70| 2f 20 74 68 65 73 65 20 | 72 6f 75 74 69 6e 65 73 |/ these |routines|
|00000d80| 20 2b 20 74 68 65 20 22 | 73 69 6d 70 6c 65 20 6c | + the "|simple l|
|00000d90| 69 73 74 20 61 63 63 65 | 73 73 22 20 72 6f 75 74 |ist acce|ss" rout|
|00000da0| 69 6e 65 73 20 6d 61 79 | 0d 09 2f 2f 20 62 65 20 |ines may|..// be |
|00000db0| 63 61 6c 6c 65 64 20 69 | 66 20 79 6f 75 20 65 78 |called i|f you ex|
|00000dc0| 70 6c 69 63 69 74 6c 79 | 20 6c 6f 63 6b 20 61 20 |plicitly| lock a |
|00000dd0| 6c 69 73 74 20 66 6f 72 | 20 77 72 69 74 69 6e 67 |list for| writing|
|00000de0| 2e 0d 09 2f 2f 0d 09 2f | 2f 20 49 66 20 79 6f 75 |...//../|/ If you|
|00000df0| 20 65 78 70 6c 69 63 69 | 74 6c 79 20 6c 6f 63 6b | explici|tly lock|
|00000e00| 20 61 20 6c 69 73 74 20 | 66 6f 72 20 72 65 61 64 | a list |for read|
|00000e10| 69 6e 67 2c 20 69 74 20 | 69 73 20 6f 6b 61 79 0d |ing, it |is okay.|
|00000e20| 09 2f 2f 20 74 6f 20 63 | 61 6c 6c 20 27 63 6f 6e |.// to c|all 'con|
|00000e30| 73 74 27 20 72 6f 75 74 | 69 6e 65 73 20 66 72 6f |st' rout|ines fro|
|00000e40| 6d 20 61 62 6f 76 65 2c | 20 62 75 74 20 64 6f 6e |m above,| but don|
|00000e50| 27 74 20 63 61 6c 6c 20 | 61 6e 79 0d 09 2f 2f 20 |'t call |any..// |
|00000e60| 72 6f 75 74 69 6e 65 73 | 20 74 68 61 74 20 74 72 |routines| that tr|
|00000e70| 79 20 74 6f 20 77 72 69 | 74 65 2c 20 6f 72 20 79 |y to wri|te, or y|
|00000e80| 6f 75 27 6c 6c 20 64 65 | 61 64 6c 6f 63 6b 2e 0d |ou'll de|adlock..|
|00000e90| 09 2f 2f 0d 09 76 6f 69 | 64 09 09 09 09 09 49 74 |.//..voi|d.....It|
|00000ea0| 65 6d 41 74 49 6e 64 65 | 78 28 53 49 6e 74 33 32 |emAtInde|x(SInt32|
|00000eb0| 20 69 74 65 6d 49 6e 64 | 65 78 2c 20 63 68 61 72 | itemInd|ex, char|
|00000ec0| 2a 20 63 6f 70 79 54 6f | 42 75 66 66 65 72 29 20 |* copyTo|Buffer) |
|00000ed0| 63 6f 6e 73 74 3b 0d 09 | 76 6f 69 64 09 09 09 09 |const;..|void....|
|00000ee0| 09 52 65 70 6c 61 63 65 | 49 74 65 6d 41 74 49 6e |.Replace|ItemAtIn|
|00000ef0| 64 65 78 28 53 49 6e 74 | 33 32 20 69 74 65 6d 49 |dex(SInt|32 itemI|
|00000f00| 6e 64 65 78 2c 20 63 6f | 6e 73 74 20 63 68 61 72 |ndex, co|nst char|
|00000f10| 2a 20 64 61 74 61 54 6f | 52 65 70 6c 61 63 65 57 |* dataTo|ReplaceW|
|00000f20| 69 74 68 29 3b 0d 09 76 | 6f 69 64 09 09 09 09 09 |ith);..v|oid.....|
|00000f30| 52 65 6d 6f 76 65 49 74 | 65 6d 41 74 49 6e 64 65 |RemoveIt|emAtInde|
|00000f40| 78 28 53 49 6e 74 33 32 | 20 69 74 65 6d 49 6e 64 |x(SInt32| itemInd|
|00000f50| 65 78 29 3b 0d 09 53 49 | 6e 74 33 32 09 09 09 09 |ex);..SI|nt32....|
|00000f60| 09 49 6e 64 65 78 4f 66 | 49 74 65 6d 28 63 6f 6e |.IndexOf|Item(con|
|00000f70| 73 74 20 63 68 61 72 2a | 2c 20 4c 69 73 74 45 6c |st char*|, ListEl|
|00000f80| 65 6d 65 6e 74 43 6f 6d | 70 61 72 65 50 72 6f 63 |ementCom|pareProc|
|00000f90| 50 74 72 20 63 6f 6d 70 | 61 72 65 50 72 6f 63 2c |Ptr comp|areProc,|
|00000fa0| 20 53 49 6e 74 33 32 20 | 69 6e 64 65 78 54 6f 53 | SInt32 |indexToS|
|00000fb0| 74 61 72 74 41 74 20 3d | 20 30 29 20 63 6f 6e 73 |tartAt =| 0) cons|
|00000fc0| 74 3b 0d 09 09 0d 70 72 | 69 76 61 74 65 3a 0d 09 |t;....pr|ivate:..|
|00000fd0| 0d 09 2f 2f 0d 09 2f 2f | 20 4d 65 6d 6f 72 79 20 |..//..//| Memory |
|00000fe0| 68 61 6e 64 6c 69 6e 67 | 0d 09 2f 2f 0d 09 76 6f |handling|..//..vo|
|00000ff0| 69 64 09 09 09 09 09 49 | 6e 73 75 72 65 41 64 65 |id.....I|nsureAde|
|00001000| 71 75 61 74 65 53 70 61 | 63 65 28 53 49 6e 74 33 |quateSpa|ce(SInt3|
|00001010| 32 20 6e 75 6d 62 65 72 | 4f 66 49 74 65 6d 73 29 |2 number|OfItems)|
|00001020| 3b 0d 09 0d 09 2f 2f 0d | 09 2f 2f 20 50 65 65 6b |;....//.|.// Peek|
|00001030| 69 6e 67 20 61 74 20 69 | 74 65 6d 73 3a 0d 09 2f |ing at i|tems:../|
|00001040| 2f 0d 09 63 6f 6e 73 74 | 20 63 68 61 72 2a 09 09 |/..const| char*..|
|00001050| 09 09 49 74 65 6d 41 64 | 64 72 65 73 73 28 53 49 |..ItemAd|dress(SI|
|00001060| 6e 74 33 32 20 69 74 65 | 6d 49 6e 64 65 78 29 09 |nt32 ite|mIndex).|
|00001070| 63 6f 6e 73 74 09 09 09 | 09 7b 20 72 65 74 75 72 |const...|.{ retur|
|00001080| 6e 20 74 68 69 73 2d 3e | 66 4c 69 73 74 44 61 74 |n this->|fListDat|
|00001090| 61 20 2b 20 28 69 74 65 | 6d 49 6e 64 65 78 20 2a |a + (ite|mIndex *|
|000010a0| 20 66 49 74 65 6d 53 69 | 7a 65 29 3b 20 7d 0d 09 | fItemSi|ze); }..|
|000010b0| 63 68 61 72 2a 09 09 09 | 09 09 49 74 65 6d 41 64 |char*...|..ItemAd|
|000010c0| 64 72 65 73 73 28 53 49 | 6e 74 33 32 20 69 74 65 |dress(SI|nt32 ite|
|000010d0| 6d 49 6e 64 65 78 29 09 | 09 09 09 09 09 7b 20 72 |mIndex).|.....{ r|
|000010e0| 65 74 75 72 6e 20 74 68 | 69 73 2d 3e 66 4c 69 73 |eturn th|is->fLis|
|000010f0| 74 44 61 74 61 20 2b 20 | 28 69 74 65 6d 49 6e 64 |tData + |(itemInd|
|00001100| 65 78 20 2a 20 66 49 74 | 65 6d 53 69 7a 65 29 3b |ex * fIt|emSize);|
|00001110| 20 7d 0d 09 0d 09 2f 2f | 0d 09 2f 2f 20 4b 65 65 | }....//|..// Kee|
|00001120| 70 69 6e 67 20 69 74 65 | 72 61 74 6f 72 73 20 69 |ping ite|rators i|
|00001130| 6e 20 73 79 6e 63 3a 0d | 09 2f 2f 0d 09 76 6f 69 |n sync:.|.//..voi|
|00001140| 64 09 09 09 09 09 41 64 | 64 49 74 65 72 61 74 6f |d.....Ad|dIterato|
|00001150| 72 28 54 41 62 73 74 72 | 61 63 74 4c 69 73 74 49 |r(TAbstr|actListI|
|00001160| 74 65 72 61 74 6f 72 2a | 29 3b 0d 09 76 6f 69 64 |terator*|);..void|
|00001170| 09 09 09 09 09 52 65 6d | 6f 76 65 49 74 65 72 61 |.....Rem|oveItera|
|00001180| 74 6f 72 28 54 41 62 73 | 74 72 61 63 74 4c 69 73 |tor(TAbs|tractLis|
|00001190| 74 49 74 65 72 61 74 6f | 72 2a 29 3b 0d 09 76 6f |tIterato|r*);..vo|
|000011a0| 69 64 09 09 09 09 09 49 | 6e 73 75 72 65 53 70 61 |id.....I|nsureSpa|
|000011b0| 63 65 46 6f 72 49 74 65 | 72 61 74 6f 72 4c 69 73 |ceForIte|ratorLis|
|000011c0| 74 28 55 49 6e 74 31 36 | 20 6e 75 6d 62 65 72 4f |t(UInt16| numberO|
|000011d0| 66 49 74 65 72 73 4e 65 | 65 64 65 64 29 3b 0d 0d |fItersNe|eded);..|
|000011e0| 09 76 6f 69 64 09 09 09 | 09 09 4e 6f 74 69 66 79 |.void...|..Notify|
|000011f0| 49 74 65 6d 41 64 64 65 | 64 28 53 49 6e 74 33 32 |ItemAdde|d(SInt32|
|00001200| 20 69 6e 64 65 78 4f 66 | 4e 65 77 49 74 65 6d 29 | indexOf|NewItem)|
|00001210| 3b 0d 09 76 6f 69 64 09 | 09 09 09 09 4e 6f 74 69 |;..void.|....Noti|
|00001220| 66 79 49 74 65 6d 52 65 | 6d 6f 76 65 64 28 53 49 |fyItemRe|moved(SI|
|00001230| 6e 74 33 32 20 69 6e 64 | 65 78 4f 66 49 74 65 6d |nt32 ind|exOfItem|
|00001240| 52 65 6d 6f 76 65 64 29 | 3b 0d 09 76 6f 69 64 09 |Removed)|;..void.|
|00001250| 09 09 09 09 4e 6f 74 69 | 66 79 4c 69 73 74 44 65 |....Noti|fyListDe|
|00001260| 73 74 72 6f 79 65 64 28 | 29 3b 0d 09 0d 70 72 69 |stroyed(|);...pri|
|00001270| 76 61 74 65 3a 0d 09 63 | 68 61 72 2a 09 09 09 09 |vate:..c|har*....|
|00001280| 09 66 4c 69 73 74 44 61 | 74 61 3b 0d 09 55 49 6e |.fListDa|ta;..UIn|
|00001290| 74 33 32 09 09 09 09 09 | 66 49 74 65 6d 53 69 7a |t32.....|fItemSiz|
|000012a0| 65 3b 0d 09 55 49 6e 74 | 33 32 09 09 09 09 09 66 |e;..UInt|32.....f|
|000012b0| 49 74 65 6d 73 49 6e 4c | 69 73 74 3b 0d 09 55 49 |ItemsInL|ist;..UI|
|000012c0| 6e 74 33 32 09 09 09 09 | 09 66 53 70 61 63 65 52 |nt32....|.fSpaceR|
|000012d0| 65 73 65 72 76 65 64 3b | 0d 0d 23 69 66 20 44 45 |eserved;|..#if DE|
|000012e0| 42 55 47 50 52 45 45 4d | 50 54 49 56 45 4c 4f 43 |BUGPREEM|PTIVELOC|
|000012f0| 4b 0d 09 55 49 6e 74 33 | 32 09 09 09 09 09 66 52 |K..UInt3|2.....fR|
|00001300| 65 61 64 4c 6f 63 6b 73 | 3b 0d 09 55 49 6e 74 33 |eadLocks|;..UInt3|
|00001310| 32 09 09 09 09 09 66 57 | 72 69 74 65 4c 6f 63 6b |2.....fW|riteLock|
|00001320| 73 3b 0d 23 65 6e 64 69 | 66 0d 09 0d 09 54 41 62 |s;.#endi|f....TAb|
|00001330| 73 74 72 61 63 74 4c 69 | 73 74 49 74 65 72 61 74 |stractLi|stIterat|
|00001340| 6f 72 2a 2a 09 66 49 74 | 65 72 61 74 6f 72 4c 69 |or**.fIt|eratorLi|
|00001350| 73 74 3b 0d 09 55 49 6e | 74 31 36 09 09 09 09 09 |st;..UIn|t16.....|
|00001360| 66 4e 75 6d 62 65 72 4f | 66 49 74 65 72 61 74 6f |fNumberO|fIterato|
|00001370| 72 73 3b 0d 09 55 49 6e | 74 31 36 09 09 09 09 09 |rs;..UIn|t16.....|
|00001380| 66 49 74 65 72 61 74 6f | 72 4c 69 73 74 52 65 73 |fIterato|rListRes|
|00001390| 65 72 76 65 64 53 70 61 | 63 65 3b 0d 7d 3b 0d 0d |ervedSpa|ce;.};..|
|000013a0| 74 65 6d 70 6c 61 74 65 | 20 3c 63 6c 61 73 73 20 |template| <class |
|000013b0| 54 3e 20 63 6c 61 73 73 | 20 41 6e 49 74 65 72 61 |T> class| AnItera|
|000013c0| 74 6f 72 4f 66 41 4c 69 | 73 74 4f 66 3b 0d 0d 2f |torOfALi|stOf;../|
|000013d0| 2f 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |/=======|========|
|000013e0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|000013f0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00001400| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00001410| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00001420| 3d 0d 2f 2f 20 54 45 4d | 50 4c 41 54 45 20 41 4c |=.// TEM|PLATE AL|
|00001430| 69 73 74 4f 66 0d 2f 2f | 3d 3d 3d 3d 3d 3d 3d 3d |istOf.//|========|
|00001440| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00001450| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00001460| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00001470| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00001480| 3d 3d 3d 3d 3d 3d 3d 3d | 0d 0d 74 65 6d 70 6c 61 |========|..templa|
|00001490| 74 65 20 3c 63 6c 61 73 | 73 20 54 3e 20 63 6c 61 |te <clas|s T> cla|
|000014a0| 73 73 20 41 4c 69 73 74 | 4f 66 0d 7b 0d 09 2f 2f |ss AList|Of.{..//|
|000014b0| 0d 09 2f 2f 20 54 68 69 | 73 20 69 73 20 6f 6e 6c |..// Thi|s is onl|
|000014c0| 79 20 68 65 72 65 20 73 | 6f 20 74 68 61 74 20 74 |y here s|o that t|
|000014d0| 68 65 20 69 74 65 72 61 | 74 6f 72 20 63 61 6e 20 |he itera|tor can |
|000014e0| 67 61 69 6e 20 61 63 63 | 65 73 73 20 74 6f 20 74 |gain acc|ess to t|
|000014f0| 68 65 0d 09 2f 2f 20 6c | 69 73 74 20 73 74 6f 72 |he..// l|ist stor|
|00001500| 61 67 65 20 6f 62 6a 65 | 63 74 20 64 75 72 72 69 |age obje|ct durri|
|00001510| 6e 67 20 69 74 73 20 63 | 6f 6e 73 74 72 75 63 74 |ng its c|onstruct|
|00001520| 6f 72 20 61 6e 64 20 64 | 65 73 74 72 75 63 74 6f |or and d|estructo|
|00001530| 72 2c 0d 09 2f 2f 20 61 | 6e 64 20 74 68 65 72 65 |r,..// a|nd there|
|00001540| 62 79 20 72 65 67 69 73 | 74 65 72 20 69 74 73 65 |by regis|ter itse|
|00001550| 6c 66 20 77 69 74 68 20 | 74 68 65 20 6c 69 73 74 |lf with |the list|
|00001560| 20 73 74 6f 72 61 67 65 | 2e 0d 09 2f 2f 0d 09 66 | storage|...//..f|
|00001570| 72 69 65 6e 64 20 63 6c | 61 73 73 20 41 6e 49 74 |riend cl|ass AnIt|
|00001580| 65 72 61 74 6f 72 4f 66 | 41 4c 69 73 74 4f 66 3c |eratorOf|AListOf<|
|00001590| 54 3e 3b 0d 09 0d 70 75 | 62 6c 69 63 3a 0d 09 41 |T>;...pu|blic:..A|
|000015a0| 4c 69 73 74 4f 66 28 29 | 20 3a 0d 09 09 66 4c 69 |ListOf()| :...fLi|
|000015b0| 73 74 53 74 6f 72 61 67 | 65 28 73 69 7a 65 6f 66 |stStorag|e(sizeof|
|000015c0| 28 54 29 29 20 7b 7d 0d | 09 0d 09 41 4c 69 73 74 |(T)) {}.|...AList|
|000015d0| 4f 66 28 53 49 6e 74 33 | 32 20 69 6e 69 74 69 61 |Of(SInt3|2 initia|
|000015e0| 6c 49 74 65 6d 73 29 20 | 3a 0d 09 09 66 4c 69 73 |lItems) |:...fLis|
|000015f0| 74 53 74 6f 72 61 67 65 | 28 73 69 7a 65 6f 66 28 |tStorage|(sizeof(|
|00001600| 54 29 2c 20 69 6e 69 74 | 69 61 6c 49 74 65 6d 73 |T), init|ialItems|
|00001610| 29 20 7b 7d 0d 09 0d 09 | 41 4c 69 73 74 4f 66 28 |) {}....|AListOf(|
|00001620| 63 6f 6e 73 74 20 41 4c | 69 73 74 4f 66 3c 54 3e |const AL|istOf<T>|
|00001630| 26 20 63 6f 70 79 46 72 | 6f 6d 29 20 3a 0d 09 09 |& copyFr|om) :...|
|00001640| 66 4c 69 73 74 53 74 6f | 72 61 67 65 28 63 6f 70 |fListSto|rage(cop|
|00001650| 79 46 72 6f 6d 2e 66 4c | 69 73 74 53 74 6f 72 61 |yFrom.fL|istStora|
|00001660| 67 65 29 20 7b 7d 0d 09 | 0d 09 2f 2f 0d 09 2f 2f |ge) {}..|..//..//|
|00001670| 20 53 69 6d 70 6c 65 20 | 6c 69 73 74 20 61 63 63 | Simple |list acc|
|00001680| 65 73 73 0d 09 2f 2f 0d | 09 42 6f 6f 6c 65 61 6e |ess..//.|.Boolean|
|00001690| 09 09 09 09 09 45 6d 70 | 74 79 28 29 20 63 6f 6e |.....Emp|ty() con|
|000016a0| 73 74 09 09 09 09 09 09 | 09 09 7b 20 72 65 74 75 |st......|..{ retu|
|000016b0| 72 6e 20 66 4c 69 73 74 | 53 74 6f 72 61 67 65 2e |rn fList|Storage.|
|000016c0| 45 6d 70 74 79 28 29 3b | 20 7d 0d 09 53 49 6e 74 |Empty();| }..SInt|
|000016d0| 33 32 09 09 09 09 09 49 | 74 65 6d 73 49 6e 4c 69 |32.....I|temsInLi|
|000016e0| 73 74 28 29 20 63 6f 6e | 73 74 09 09 09 09 09 09 |st() con|st......|
|000016f0| 09 7b 20 72 65 74 75 72 | 6e 20 66 4c 69 73 74 53 |.{ retur|n fListS|
|00001700| 74 6f 72 61 67 65 2e 49 | 74 65 6d 73 49 6e 4c 69 |torage.I|temsInLi|
|00001710| 73 74 28 29 3b 20 7d 0d | 0d 09 2f 2f 0d 09 2f 2f |st(); }.|..//..//|
|00001720| 20 50 72 69 6d 61 72 79 | 20 6c 69 73 74 2d 6d 61 | Primary| list-ma|
|00001730| 6e 69 70 75 6c 61 74 69 | 6f 6e 20 61 6e 64 20 69 |nipulati|on and i|
|00001740| 74 65 6d 20 61 63 63 65 | 73 73 20 41 50 49 3a 0d |tem acce|ss API:.|
|00001750| 09 2f 2f 0d 09 41 4c 69 | 73 74 4f 66 3c 54 3e 2a |.//..ALi|stOf<T>*|
|00001760| 09 09 09 09 43 6c 6f 6e | 65 28 29 20 63 6f 6e 73 |....Clon|e() cons|
|00001770| 74 09 09 09 09 09 09 09 | 09 7b 20 41 4c 69 73 74 |t.......|.{ AList|
|00001780| 4f 66 3c 54 3e 2a 20 63 | 6c 6f 6e 65 64 4c 69 73 |Of<T>* c|lonedLis|
|00001790| 74 20 3d 20 6e 65 77 20 | 41 4c 69 73 74 4f 66 3c |t = new |AListOf<|
|000017a0| 54 3e 28 2a 74 68 69 73 | 29 3b 20 72 65 74 75 72 |T>(*this|); retur|
|000017b0| 6e 20 63 6c 6f 6e 65 64 | 4c 69 73 74 3b 20 7d 0d |n cloned|List; }.|
|000017c0| 09 0d 09 2f 2f 0d 09 2f | 2f 20 41 64 64 20 61 6e |...//../|/ Add an|
|000017d0| 20 69 74 65 6d 20 74 6f | 20 74 68 65 20 6c 69 73 | item to| the lis|
|000017e0| 74 20 69 6e 20 6e 6f 20 | 70 61 72 74 69 63 75 6c |t in no |particul|
|000017f0| 61 72 20 6f 72 64 65 72 | 20 28 70 75 74 73 20 6e |ar order| (puts n|
|00001800| 65 77 0d 09 2f 2f 20 69 | 74 65 6d 20 69 6e 20 75 |ew..// i|tem in u|
|00001810| 73 69 6e 67 20 74 68 65 | 20 66 61 73 74 65 73 74 |sing the| fastest|
|00001820| 20 69 6e 73 65 72 74 69 | 6f 6e 20 61 76 61 69 6c | inserti|on avail|
|00001830| 61 62 6c 65 29 0d 09 2f | 2f 0d 09 76 6f 69 64 09 |able)../|/..void.|
|00001840| 09 09 09 09 41 64 64 28 | 63 6f 6e 73 74 20 54 26 |....Add(|const T&|
|00001850| 20 76 61 6c 75 65 54 6f | 41 64 64 29 09 09 09 09 | valueTo|Add)....|
|00001860| 09 7b 20 66 4c 69 73 74 | 53 74 6f 72 61 67 65 2e |.{ fList|Storage.|
|00001870| 41 64 64 28 28 63 6f 6e | 73 74 20 63 68 61 72 2a |Add((con|st char*|
|00001880| 29 26 76 61 6c 75 65 54 | 6f 41 64 64 29 3b 20 7d |)&valueT|oAdd); }|
|00001890| 0d 09 42 6f 6f 6c 65 61 | 6e 09 09 09 09 09 52 65 |..Boolea|n.....Re|
|000018a0| 6d 6f 76 65 28 63 6f 6e | 73 74 20 54 26 20 76 61 |move(con|st T& va|
|000018b0| 6c 75 65 54 6f 52 65 6d | 6f 76 65 29 09 09 09 09 |lueToRem|ove)....|
|000018c0| 7b 20 72 65 74 75 72 6e | 20 66 4c 69 73 74 53 74 |{ return| fListSt|
|000018d0| 6f 72 61 67 65 2e 52 65 | 6d 6f 76 65 28 28 63 6f |orage.Re|move((co|
|000018e0| 6e 73 74 20 63 68 61 72 | 2a 29 26 76 61 6c 75 65 |nst char|*)&value|
|000018f0| 54 6f 52 65 6d 6f 76 65 | 2c 20 43 6f 6d 70 61 72 |ToRemove|, Compar|
|00001900| 65 54 77 6f 45 6c 65 6d | 65 6e 74 73 29 3b 20 7d |eTwoElem|ents); }|
|00001910| 0d 09 0d 09 2f 2f 0d 09 | 2f 2f 20 6e 2e 62 2e 09 |....//..|// n.b..|
|00001920| 49 6e 73 65 72 74 69 6e | 67 20 4e 20 69 74 65 6d |Insertin|g N item|
|00001930| 73 20 61 74 20 74 68 65 | 20 62 65 67 69 6e 6e 69 |s at the| beginni|
|00001940| 6e 67 20 6f 66 20 74 68 | 65 20 6c 69 73 74 20 69 |ng of th|e list i|
|00001950| 73 20 4f 28 4e 5e 32 29 | 0d 09 2f 2f 09 09 49 6e |s O(N^2)|..//..In|
|00001960| 73 65 72 74 69 6e 67 20 | 4e 20 69 74 65 6d 73 20 |serting |N items |
|00001970| 61 74 20 74 68 65 20 65 | 6e 64 20 6f 66 20 74 68 |at the e|nd of th|
|00001980| 65 20 6c 69 73 74 20 69 | 73 20 4f 28 4e 29 0d 09 |e list i|s O(N)..|
|00001990| 2f 2f 09 09 49 6e 73 65 | 72 74 69 6e 67 20 4e 20 |//..Inse|rting N |
|000019a0| 69 74 65 6d 73 20 61 74 | 20 74 68 65 20 65 6e 64 |items at| the end|
|000019b0| 20 6f 66 20 74 68 65 20 | 6c 69 73 74 20 61 6e 64 | of the |list and|
|000019c0| 20 72 65 76 65 72 73 69 | 6e 67 20 74 68 65 69 72 | reversi|ng their|
|000019d0| 20 6f 72 64 65 72 20 69 | 73 20 61 6c 73 6f 20 4f | order i|s also O|
|000019e0| 28 4e 29 2e 0d 09 2f 2f | 09 0d 09 76 6f 69 64 09 |(N)...//|...void.|
|000019f0| 09 09 09 09 49 6e 73 65 | 72 74 41 74 42 65 67 69 |....Inse|rtAtBegi|
|00001a00| 6e 6e 69 6e 67 28 63 6f | 6e 73 74 20 54 26 20 76 |nning(co|nst T& v|
|00001a10| 61 6c 75 65 54 6f 41 64 | 64 29 09 09 7b 20 66 4c |alueToAd|d)..{ fL|
|00001a20| 69 73 74 53 74 6f 72 61 | 67 65 2e 49 6e 73 65 72 |istStora|ge.Inser|
|00001a30| 74 41 74 42 65 67 69 6e | 6e 69 6e 67 28 28 63 6f |tAtBegin|ning((co|
|00001a40| 6e 73 74 20 63 68 61 72 | 2a 29 26 76 61 6c 75 65 |nst char|*)&value|
|00001a50| 54 6f 41 64 64 29 3b 20 | 7d 0d 09 76 6f 69 64 09 |ToAdd); |}..void.|
|00001a60| 09 09 09 09 49 6e 73 65 | 72 74 41 74 45 6e 64 28 |....Inse|rtAtEnd(|
|00001a70| 63 6f 6e 73 74 20 54 26 | 20 76 61 6c 75 65 54 6f |const T&| valueTo|
|00001a80| 41 64 64 29 09 09 09 7b | 20 66 4c 69 73 74 53 74 |Add)...{| fListSt|
|00001a90| 6f 72 61 67 65 2e 49 6e | 73 65 72 74 41 74 45 6e |orage.In|sertAtEn|
|00001aa0| 64 28 28 63 6f 6e 73 74 | 20 63 68 61 72 2a 29 26 |d((const| char*)&|
|00001ab0| 76 61 6c 75 65 54 6f 41 | 64 64 29 3b 20 7d 0d 0d |valueToA|dd); }..|
|00001ac0| 09 2f 2f 0d 09 2f 2f 20 | 6e 2e 62 2e 09 52 65 6d |.//..// |n.b..Rem|
|00001ad0| 6f 76 69 6e 67 20 4e 20 | 69 74 65 6d 73 20 66 72 |oving N |items fr|
|00001ae0| 6f 6d 20 74 68 65 20 62 | 65 67 69 6e 6e 69 6e 67 |om the b|eginning|
|00001af0| 20 6f 66 20 74 68 65 20 | 6c 69 73 74 20 69 73 20 | of the |list is |
|00001b00| 4f 28 4e 5e 32 29 0d 09 | 2f 2f 09 09 52 65 6d 6f |O(N^2)..|//..Remo|
|00001b10| 76 69 6e 67 20 4e 20 69 | 74 65 6d 73 20 66 72 6f |ving N i|tems fro|
|00001b20| 6d 20 74 68 65 20 65 6e | 64 20 6f 66 20 74 68 65 |m the en|d of the|
|00001b30| 20 6c 69 73 74 20 69 73 | 20 4f 28 4e 29 0d 09 2f | list is| O(N)../|
|00001b40| 2f 0d 09 76 6f 69 64 09 | 09 09 09 09 52 65 6d 6f |/..void.|....Remo|
|00001b50| 76 65 46 72 6f 6d 42 65 | 67 69 6e 6e 69 6e 67 28 |veFromBe|ginning(|
|00001b60| 29 09 09 09 09 09 09 7b | 20 66 4c 69 73 74 53 74 |)......{| fListSt|
|00001b70| 6f 72 61 67 65 2e 52 65 | 6d 6f 76 65 46 72 6f 6d |orage.Re|moveFrom|
|00001b80| 42 65 67 69 6e 6e 69 6e | 67 28 29 3b 20 7d 0d 09 |Beginnin|g(); }..|
|00001b90| 76 6f 69 64 09 09 09 09 | 09 52 65 6d 6f 76 65 46 |void....|.RemoveF|
|00001ba0| 72 6f 6d 45 6e 64 28 29 | 09 09 09 09 09 09 09 09 |romEnd()|........|
|00001bb0| 7b 20 66 4c 69 73 74 53 | 74 6f 72 61 67 65 2e 52 |{ fListS|torage.R|
|00001bc0| 65 6d 6f 76 65 46 72 6f | 6d 45 6e 64 28 29 3b 20 |emoveFro|mEnd(); |
|00001bd0| 7d 0d 0d 09 2f 2f 0d 09 | 2f 2f 20 4c 69 73 74 20 |}...//..|// List |
|00001be0| 61 63 63 65 73 73 6f 72 | 73 0d 09 2f 2f 09 0d 09 |accessor|s..//...|
|00001bf0| 54 09 09 09 09 09 09 46 | 69 72 73 74 49 74 65 6d |T......F|irstItem|
|00001c00| 28 29 20 63 6f 6e 73 74 | 09 09 09 09 09 09 09 7b |() const|.......{|
|00001c10| 20 54 20 72 65 73 75 6c | 74 3b 20 66 4c 69 73 74 | T resul|t; fList|
|00001c20| 53 74 6f 72 61 67 65 2e | 46 69 72 73 74 49 74 65 |Storage.|FirstIte|
|00001c30| 6d 28 28 63 68 61 72 2a | 29 26 72 65 73 75 6c 74 |m((char*|)&result|
|00001c40| 29 3b 20 72 65 74 75 72 | 6e 20 72 65 73 75 6c 74 |); retur|n result|
|00001c50| 3b 20 7d 0d 09 54 09 09 | 09 09 09 09 4c 61 73 74 |; }..T..|....Last|
|00001c60| 49 74 65 6d 28 29 20 63 | 6f 6e 73 74 09 09 09 09 |Item() c|onst....|
|00001c70| 09 09 09 7b 20 54 20 72 | 65 73 75 6c 74 3b 20 66 |...{ T r|esult; f|
|00001c80| 4c 69 73 74 53 74 6f 72 | 61 67 65 2e 4c 61 73 74 |ListStor|age.Last|
|00001c90| 49 74 65 6d 28 28 63 68 | 61 72 2a 29 26 72 65 73 |Item((ch|ar*)&res|
|00001ca0| 75 6c 74 29 3b 20 72 65 | 74 75 72 6e 20 72 65 73 |ult); re|turn res|
|00001cb0| 75 6c 74 3b 20 7d 0d 0d | 09 2f 2f 0d 09 2f 2f 20 |ult; }..|.//..// |
|00001cc0| 4d 69 73 63 20 6c 69 73 | 74 20 6d 61 6e 69 70 75 |Misc lis|t manipu|
|00001cd0| 6c 61 74 69 6f 6e 0d 09 | 2f 2f 0d 09 76 6f 69 64 |lation..|//..void|
|00001ce0| 09 09 09 09 09 52 65 76 | 65 72 73 65 4f 72 64 65 |.....Rev|erseOrde|
|00001cf0| 72 4f 66 4c 69 73 74 28 | 29 09 09 09 09 09 09 7b |rOfList(|)......{|
|00001d00| 20 54 20 74 65 6d 70 53 | 74 6f 72 61 67 65 3b 20 | T tempS|torage; |
|00001d10| 66 4c 69 73 74 53 74 6f | 72 61 67 65 2e 52 65 76 |fListSto|rage.Rev|
|00001d20| 65 72 73 65 4f 72 64 65 | 72 4f 66 4c 69 73 74 28 |erseOrde|rOfList(|
|00001d30| 28 63 68 61 72 2a 29 26 | 74 65 6d 70 53 74 6f 72 |(char*)&|tempStor|
|00001d40| 61 67 65 29 3b 20 7d 0d | 09 76 6f 69 64 09 09 09 |age); }.|.void...|
|00001d50| 09 09 4d 61 6b 65 45 6d | 70 74 79 28 29 09 09 09 |..MakeEm|pty()...|
|00001d60| 09 09 09 09 09 09 7b 20 | 66 4c 69 73 74 53 74 6f |......{ |fListSto|
|00001d70| 72 61 67 65 2e 4d 61 6b | 65 45 6d 70 74 79 28 29 |rage.Mak|eEmpty()|
|00001d80| 3b 20 7d 0d 09 09 0d 09 | 2f 2f 0d 09 2f 2f 20 53 |; }.....|//..// S|
|00001d90| 79 6e 6f 6e 79 6d 73 2c | 20 66 6f 72 20 74 68 6f |ynonyms,| for tho|
|00001da0| 73 65 20 77 68 6f 20 63 | 61 72 65 0d 09 2f 2f 0d |se who c|are..//.|
|00001db0| 09 76 6f 69 64 09 09 09 | 09 09 50 75 73 68 28 63 |.void...|..Push(c|
|00001dc0| 6f 6e 73 74 20 54 26 20 | 76 61 6c 75 65 54 6f 50 |onst T& |valueToP|
|00001dd0| 75 73 68 29 09 09 09 09 | 09 7b 20 74 68 69 73 2d |ush)....|.{ this-|
|00001de0| 3e 49 6e 73 65 72 74 41 | 74 45 6e 64 28 76 61 6c |>InsertA|tEnd(val|
|00001df0| 75 65 54 6f 50 75 73 68 | 29 3b 20 7d 0d 09 54 09 |ueToPush|); }..T.|
|00001e00| 09 09 09 09 09 54 6f 70 | 4f 66 53 74 61 63 6b 56 |.....Top|OfStackV|
|00001e10| 61 6c 75 65 28 29 20 63 | 6f 6e 73 74 09 09 09 09 |alue() c|onst....|
|00001e20| 09 09 7b 20 72 65 74 75 | 72 6e 20 74 68 69 73 2d |..{ retu|rn this-|
|00001e30| 3e 4c 61 73 74 49 74 65 | 6d 28 29 3b 20 7d 0d 09 |>LastIte|m(); }..|
|00001e40| 54 09 09 09 09 09 09 50 | 6f 70 28 29 09 09 09 09 |T......P|op()....|
|00001e50| 09 09 09 09 09 09 7b 20 | 54 20 74 65 6d 70 20 3d |......{ |T temp =|
|00001e60| 20 74 68 69 73 2d 3e 54 | 6f 70 4f 66 53 74 61 63 | this->T|opOfStac|
|00001e70| 6b 56 61 6c 75 65 28 29 | 3b 20 74 68 69 73 2d 3e |kValue()|; this->|
|00001e80| 52 65 6d 6f 76 65 46 72 | 6f 6d 45 6e 64 28 29 3b |RemoveFr|omEnd();|
|00001e90| 20 72 65 74 75 72 6e 20 | 74 65 6d 70 3b 20 7d 0d | return |temp; }.|
|00001ea0| 09 0d 09 2f 2f 0d 09 2f | 2f 20 45 6e 71 75 65 75 |...//../|/ Enqueu|
|00001eb0| 65 69 6e 67 20 61 6e 64 | 20 64 65 71 75 65 75 65 |eing and| dequeue|
|00001ec0| 69 6e 67 20 4e 20 69 74 | 65 6d 73 20 69 73 20 4f |ing N it|ems is O|
|00001ed0| 28 4e 2a 44 29 2c 20 77 | 68 65 72 65 20 44 20 69 |(N*D), w|here D i|
|00001ee0| 73 20 74 68 65 0d 09 2f | 2f 20 61 76 65 72 61 67 |s the../|/ averag|
|00001ef0| 65 20 64 65 70 74 68 20 | 6f 66 20 74 68 65 20 71 |e depth |of the q|
|00001f00| 75 65 75 65 2e 20 20 54 | 68 69 73 20 69 73 20 4f |ueue. T|his is O|
|00001f10| 28 4e 5e 32 29 20 66 6f | 72 20 6d 6f 73 74 20 75 |(N^2) fo|r most u|
|00001f20| 73 65 73 2e 0d 09 2f 2f | 20 4f 28 4e 29 20 61 6c |ses...//| O(N) al|
|00001f30| 67 6f 72 69 74 68 6d 73 | 20 65 78 69 73 74 2c 20 |gorithms| exist, |
|00001f40| 62 75 74 20 63 75 72 72 | 65 6e 74 6c 79 20 61 72 |but curr|ently ar|
|00001f50| 65 20 6e 6f 74 20 69 6d | 70 6c 65 6d 65 6e 74 65 |e not im|plemente|
|00001f60| 64 2c 20 61 73 0d 09 2f | 2f 20 74 68 65 79 20 72 |d, as../|/ they r|
|00001f70| 65 71 75 69 72 65 20 6c | 65 61 76 69 6e 67 20 69 |equire l|eaving i|
|00001f80| 6e 73 65 72 74 69 6f 6e | 20 67 61 70 73 20 74 68 |nsertion| gaps th|
|00001f90| 61 74 20 65 69 74 68 65 | 72 20 69 6e 76 61 6c 69 |at eithe|r invali|
|00001fa0| 64 61 74 65 20 74 68 65 | 0d 09 2f 2f 20 66 6f 72 |date the|..// for|
|00001fb0| 6d 61 74 20 6f 66 20 6f | 75 72 20 6c 69 73 74 2c |mat of o|ur list,|
|00001fc0| 20 6f 72 20 6e 65 65 64 | 6c 65 73 73 6c 79 20 63 | or need|lessly c|
|00001fd0| 6f 6d 70 6c 69 63 61 74 | 65 20 74 68 65 20 61 63 |omplicat|e the ac|
|00001fe0| 63 65 73 73 20 66 6f 72 | 0d 09 2f 2f 20 61 6c 6c |cess for|..// all|
|00001ff0| 20 6c 69 73 74 73 2c 20 | 65 76 65 6e 20 74 68 6f | lists, |even tho|
|00002000| 73 65 20 6e 6f 74 20 74 | 6f 20 62 65 20 75 73 65 |se not t|o be use|
|00002010| 64 20 61 73 20 61 20 71 | 75 65 75 65 2e 20 20 49 |d as a q|ueue. I|
|00002020| 66 20 79 6f 75 0d 09 2f | 2f 20 72 65 61 6c 6c 79 |f you../|/ really|
|00002030| 20 6e 65 65 64 20 61 20 | 66 61 73 74 20 71 75 65 | need a |fast que|
|00002040| 75 65 2c 20 77 72 69 74 | 65 20 61 20 71 75 65 75 |ue, writ|e a queu|
|00002050| 65 20 63 6c 61 73 73 2c | 20 64 6f 6e 27 74 20 75 |e class,| don't u|
|00002060| 73 65 20 74 68 69 73 0d | 09 2f 2f 20 74 65 6d 70 |se this.|.// temp|
|00002070| 6c 61 74 65 2e 0d 09 2f | 2f 0d 09 76 6f 69 64 09 |late.../|/..void.|
|00002080| 09 09 09 09 45 6e 71 75 | 65 75 65 28 63 6f 6e 73 |....Enqu|eue(cons|
|00002090| 74 20 54 26 20 76 61 6c | 75 65 54 6f 51 29 09 09 |t T& val|ueToQ)..|
|000020a0| 09 09 09 7b 20 74 68 69 | 73 2d 3e 49 6e 73 65 72 |...{ thi|s->Inser|
|000020b0| 74 41 74 45 6e 64 28 76 | 61 6c 75 65 54 6f 51 29 |tAtEnd(v|alueToQ)|
|000020c0| 3b 20 7d 0d 09 54 09 09 | 09 09 09 09 54 6f 70 4f |; }..T..|....TopO|
|000020d0| 66 51 75 65 75 65 56 61 | 6c 75 65 28 29 20 63 6f |fQueueVa|lue() co|
|000020e0| 6e 73 74 09 09 09 09 09 | 09 7b 20 72 65 74 75 72 |nst.....|.{ retur|
|000020f0| 6e 20 74 68 69 73 2d 3e | 46 69 72 73 74 49 74 65 |n this->|FirstIte|
|00002100| 6d 28 29 3b 20 7d 0d 09 | 54 09 09 09 09 09 09 44 |m(); }..|T......D|
|00002110| 65 71 75 65 75 65 28 29 | 09 09 09 09 09 09 09 09 |equeue()|........|
|00002120| 09 7b 20 54 20 74 65 6d | 70 20 3d 20 74 68 69 73 |.{ T tem|p = this|
|00002130| 2d 3e 54 6f 70 4f 66 51 | 75 65 75 65 56 61 6c 75 |->TopOfQ|ueueValu|
|00002140| 65 28 29 3b 20 74 68 69 | 73 2d 3e 52 65 6d 6f 76 |e(); thi|s->Remov|
|00002150| 65 46 72 6f 6d 42 65 67 | 69 6e 6e 69 6e 67 28 29 |eFromBeg|inning()|
|00002160| 3b 20 72 65 74 75 72 6e | 20 74 65 6d 70 3b 20 7d |; return| temp; }|
|00002170| 0d 0d 09 2f 2f 0d 09 2f | 2f 20 41 63 63 65 73 73 |...//../|/ Access|
|00002180| 20 6c 6f 63 6b 73 20 66 | 6f 72 20 70 72 65 65 6d | locks f|or preem|
|00002190| 70 74 69 76 65 20 73 6f | 66 74 77 61 72 65 2e 0d |ptive so|ftware..|
|000021a0| 09 2f 2f 0d 09 2f 2f 20 | 54 68 65 73 65 20 6c 6f |.//..// |These lo|
|000021b0| 63 6b 73 20 73 68 6f 75 | 6c 64 20 62 65 20 6b 65 |cks shou|ld be ke|
|000021c0| 70 74 20 66 6f 72 20 61 | 20 6d 69 6e 69 6d 75 6d |pt for a| minimum|
|000021d0| 20 61 6d 6f 75 6e 74 20 | 6f 66 20 74 69 6d 65 2e | amount |of time.|
|000021e0| 0d 09 2f 2f 20 4e 6f 74 | 65 20 74 68 61 74 20 74 |..// Not|e that t|
|000021f0| 68 65 20 6d 65 74 68 6f | 64 73 20 61 62 6f 76 65 |he metho|ds above|
|00002200| 20 61 6c 6c 20 63 61 6c | 6c 20 4c 6f 63 6b 2f 52 | all cal|l Lock/R|
|00002210| 65 6c 69 6e 71 75 69 73 | 68 20 61 73 0d 09 2f 2f |elinquis|h as..//|
|00002220| 20 6e 65 63 65 73 73 61 | 72 79 2e 0d 09 2f 2f 0d | necessa|ry...//.|
|00002230| 09 2f 2f 09 2d 09 4c 6f | 63 6b 46 6f 72 52 65 61 |.//.-.Lo|ckForRea|
|00002240| 64 69 6e 67 20 62 6c 6f | 63 6b 73 20 75 6e 74 69 |ding blo|cks unti|
|00002250| 6c 20 74 68 65 20 61 63 | 74 69 76 65 20 77 72 69 |l the ac|tive wri|
|00002260| 74 65 72 20 28 69 66 20 | 61 6e 79 29 0d 09 2f 2f |ter (if |any)..//|
|00002270| 09 09 20 72 65 6c 69 6e | 71 75 69 73 68 65 73 20 |.. relin|quishes |
|00002280| 74 68 65 20 77 72 69 74 | 65 20 6c 6f 63 6b 0d 09 |the writ|e lock..|
|00002290| 2f 2f 09 2d 09 4c 6f 63 | 6b 46 6f 72 57 72 69 74 |//.-.Loc|kForWrit|
|000022a0| 69 6e 67 20 62 6c 6f 63 | 6b 73 20 75 6e 74 69 6c |ing bloc|ks until|
|000022b0| 20 74 68 65 20 61 63 74 | 69 76 65 20 77 72 69 74 | the act|ive writ|
|000022c0| 65 72 20 61 6e 64 20 61 | 6c 6c 0d 09 2f 2f 09 09 |er and a|ll..//..|
|000022d0| 20 61 63 74 69 76 65 20 | 72 65 61 64 65 72 73 20 | active |readers |
|000022e0| 28 69 66 20 61 6e 79 29 | 20 72 65 6c 69 6e 71 75 |(if any)| relinqu|
|000022f0| 69 73 68 20 74 68 65 69 | 72 20 72 65 73 70 65 63 |ish thei|r respec|
|00002300| 74 69 76 65 20 6c 6f 63 | 6b 73 0d 09 2f 2f 0d 09 |tive loc|ks..//..|
|00002310| 2f 2f 20 45 76 65 72 79 | 20 63 61 6c 6c 20 74 6f |// Every| call to|
|00002320| 20 22 4c 6f 63 6b 22 20 | 6d 75 73 74 20 62 65 20 | "Lock" |must be |
|00002330| 28 73 6f 6f 6e 29 20 62 | 61 6c 61 6e 63 65 64 20 |(soon) b|alanced |
|00002340| 62 79 20 61 20 63 61 6c | 6c 20 74 6f 0d 09 2f 2f |by a cal|l to..//|
|00002350| 20 22 52 65 6c 69 6e 71 | 75 69 73 68 22 3b 20 63 | "Relinq|uish"; c|
|00002360| 61 6c 6c 69 6e 67 20 4c | 6f 63 6b 46 6f 72 52 65 |alling L|ockForRe|
|00002370| 61 64 69 6e 67 20 6d 75 | 6c 74 69 70 6c 65 20 74 |ading mu|ltiple t|
|00002380| 69 6d 65 73 20 69 73 20 | 6f 6b 61 79 2c 0d 09 2f |imes is |okay,../|
|00002390| 2f 20 61 73 20 6c 6f 6e | 67 20 61 73 20 74 68 65 |/ as lon|g as the|
|000023a0| 20 63 61 6c 6c 73 20 74 | 6f 20 52 65 6c 69 6e 71 | calls t|o Relinq|
|000023b0| 75 69 73 68 52 65 61 64 | 4c 6f 63 6b 20 62 61 6c |uishRead|Lock bal|
|000023c0| 61 6e 63 65 20 74 68 65 | 20 63 61 6c 6c 73 0d 09 |ance the| calls..|
|000023d0| 2f 2f 20 74 6f 20 4c 6f | 63 6b 46 6f 72 52 65 61 |// to Lo|ckForRea|
|000023e0| 64 69 6e 67 2e 0d 09 2f | 2f 0d 09 2f 2f 20 49 4d |ding.../|/..// IM|
|000023f0| 50 4f 52 54 41 4e 54 3a | 20 20 54 68 65 72 65 20 |PORTANT:| There |
|00002400| 63 61 6e 20 6f 6e 6c 79 | 20 62 65 20 6f 6e 65 20 |can only| be one |
|00002410| 77 72 69 74 65 72 2c 20 | 73 6f 20 79 6f 75 20 77 |writer, |so you w|
|00002420| 69 6c 6c 0d 09 2f 2f 20 | 62 6c 6f 63 6b 20 79 6f |ill..// |block yo|
|00002430| 75 72 73 65 6c 66 20 66 | 6f 72 65 76 65 72 20 28 |urself f|orever (|
|00002440| 64 65 61 64 6c 6f 63 6b | 29 20 69 66 20 79 6f 75 |deadlock|) if you|
|00002450| 20 74 72 79 20 74 6f 20 | 4c 6f 63 6b 46 6f 72 57 | try to |LockForW|
|00002460| 72 69 74 69 6e 67 2e 0d | 09 2f 2f 20 74 77 69 63 |riting..|.// twic|
|00002470| 65 2e 20 20 59 6f 75 20 | 77 69 6c 6c 20 61 6c 73 |e. You |will als|
|00002480| 6f 20 62 6c 6f 63 6b 20 | 79 6f 75 72 73 65 6c 66 |o block |yourself|
|00002490| 20 66 6f 72 65 76 65 72 | 20 69 66 20 79 6f 75 20 | forever| if you |
|000024a0| 63 61 6c 6c 20 0d 09 2f | 2f 20 4c 6f 63 6b 46 6f |call ../|/ LockFo|
|000024b0| 72 57 72 69 74 69 6e 67 | 20 66 6f 6c 6c 6f 77 65 |rWriting| followe|
|000024c0| 64 20 62 79 20 61 20 63 | 61 6c 6c 20 74 6f 20 4c |d by a c|all to L|
|000024d0| 6f 63 6b 46 6f 72 52 65 | 61 64 69 6e 67 20 28 6f |ockForRe|ading (o|
|000024e0| 72 0d 09 2f 2f 20 76 69 | 73 61 2d 76 65 72 73 61 |r..// vi|sa-versa|
|000024f0| 29 2e 0d 09 2f 2f 0d 09 | 2f 2f 20 54 68 65 72 65 |)...//..|// There|
|00002500| 66 6f 72 65 2c 20 63 61 | 6c 6c 69 6e 67 20 74 68 |fore, ca|lling th|
|00002510| 65 20 4c 6f 63 6b 20 72 | 6f 75 74 69 6e 65 73 20 |e Lock r|outines |
|00002520| 64 69 72 65 63 74 6c 79 | 20 69 73 20 64 61 6e 67 |directly| is dang|
|00002530| 65 72 6f 75 73 0d 09 2f | 2f 0d 09 76 6f 69 64 09 |erous../|/..void.|
|00002540| 09 09 09 09 4c 6f 63 6b | 46 6f 72 52 65 61 64 69 |....Lock|ForReadi|
|00002550| 6e 67 28 29 20 63 6f 6e | 73 74 09 09 09 09 09 09 |ng() con|st......|
|00002560| 7b 20 66 4c 69 73 74 53 | 74 6f 72 61 67 65 2e 4c |{ fListS|torage.L|
|00002570| 6f 63 6b 46 6f 72 52 65 | 61 64 69 6e 67 28 29 3b |ockForRe|ading();|
|00002580| 20 7d 0d 09 76 6f 69 64 | 09 09 09 09 09 52 65 6c | }..void|.....Rel|
|00002590| 69 6e 71 75 69 73 68 52 | 65 61 64 4c 6f 63 6b 28 |inquishR|eadLock(|
|000025a0| 29 20 63 6f 6e 73 74 09 | 09 09 09 09 7b 20 66 4c |) const.|....{ fL|
|000025b0| 69 73 74 53 74 6f 72 61 | 67 65 2e 52 65 6c 69 6e |istStora|ge.Relin|
|000025c0| 71 75 69 73 68 52 65 61 | 64 4c 6f 63 6b 28 29 3b |quishRea|dLock();|
|000025d0| 20 7d 0d 09 76 6f 69 64 | 09 09 09 09 09 4c 6f 63 | }..void|.....Loc|
|000025e0| 6b 46 6f 72 57 72 69 74 | 69 6e 67 28 29 09 09 09 |kForWrit|ing()...|
|000025f0| 09 09 09 09 7b 20 66 4c | 69 73 74 53 74 6f 72 61 |....{ fL|istStora|
|00002600| 67 65 2e 4c 6f 63 6b 46 | 6f 72 57 72 69 74 69 6e |ge.LockF|orWritin|
|00002610| 67 28 29 3b 20 7d 0d 09 | 76 6f 69 64 09 09 09 09 |g(); }..|void....|
|00002620| 09 52 65 6c 69 6e 71 75 | 69 73 68 57 72 69 74 65 |.Relinqu|ishWrite|
|00002630| 4c 6f 63 6b 28 29 09 09 | 09 09 09 09 7b 20 66 4c |Lock()..|....{ fL|
|00002640| 69 73 74 53 74 6f 72 61 | 67 65 2e 52 65 6c 69 6e |istStora|ge.Relin|
|00002650| 71 75 69 73 68 57 72 69 | 74 65 4c 6f 63 6b 28 29 |quishWri|teLock()|
|00002660| 3b 20 7d 0d 0d 09 2f 2f | 0d 09 2f 2f 20 57 41 52 |; }...//|..// WAR|
|00002670| 4e 49 4e 47 3a 09 09 09 | 09 54 68 65 20 66 6f 6c |NING:...|.The fol|
|00002680| 6c 6f 77 69 6e 67 20 72 | 6f 75 74 69 6e 65 73 20 |lowing r|outines |
|00002690| 61 72 65 20 6e 6f 74 20 | 70 72 65 2d 65 6d 70 74 |are not |pre-empt|
|000026a0| 69 76 65 20 73 61 66 65 | 20 69 66 20 63 61 6c 6c |ive safe| if call|
|000026b0| 65 64 20 64 69 72 65 63 | 74 6c 79 2c 0d 09 2f 2f |ed direc|tly,..//|
|000026c0| 09 09 09 09 09 09 62 65 | 63 61 75 73 65 20 74 68 |......be|cause th|
|000026d0| 65 20 69 6e 64 65 78 20 | 76 61 6c 75 65 73 20 6d |e index |values m|
|000026e0| 61 79 20 63 68 61 6e 67 | 65 20 61 74 20 61 6e 79 |ay chang|e at any|
|000026f0| 20 69 6e 73 74 61 6e 74 | 20 69 66 20 61 6e 6f 74 | instant| if anot|
|00002700| 68 65 72 20 74 61 73 6b | 0d 09 2f 2f 09 09 09 09 |her task|..//....|
|00002710| 09 09 6d 6f 64 69 66 69 | 65 73 20 74 68 65 20 6c |..modifi|es the l|
|00002720| 69 73 74 2e 0d 09 2f 2f | 0d 09 2f 2f 20 50 72 65 |ist...//|..// Pre|
|00002730| 2d 65 6d 70 74 69 76 65 | 2d 73 61 66 65 20 61 6c |-emptive|-safe al|
|00002740| 74 65 72 6e 61 74 69 76 | 65 73 3a 0d 09 2f 2f 0d |ternativ|es:..//.|
|00002750| 09 2f 2f 20 49 74 65 6d | 41 74 49 6e 64 65 78 3a |.// Item|AtIndex:|
|00002760| 09 09 09 75 73 65 20 61 | 6e 20 69 74 65 72 61 74 |...use a|n iterat|
|00002770| 6f 72 20 61 6e 64 20 69 | 74 65 72 2e 43 75 72 72 |or and i|ter.Curr|
|00002780| 65 6e 74 28 29 0d 09 2f | 2f 20 52 65 70 6c 61 63 |ent()../|/ Replac|
|00002790| 65 49 74 65 6d 41 74 49 | 6e 64 65 78 3a 09 75 73 |eItemAtI|ndex:.us|
|000027a0| 65 20 61 6e 20 69 74 65 | 72 61 74 6f 72 20 61 6e |e an ite|rator an|
|000027b0| 64 20 69 74 65 72 2e 53 | 65 74 43 75 72 72 65 6e |d iter.S|etCurren|
|000027c0| 74 28 29 0d 09 2f 2f 20 | 52 65 6d 6f 76 65 49 74 |t()..// |RemoveIt|
|000027d0| 65 6d 41 74 49 6e 64 65 | 78 3a 09 75 73 65 20 61 |emAtInde|x:.use a|
|000027e0| 6e 20 69 74 65 72 61 74 | 6f 72 20 61 6e 64 20 69 |n iterat|or and i|
|000027f0| 74 65 72 2e 52 65 6d 6f | 76 65 43 75 72 72 65 6e |ter.Remo|veCurren|
|00002800| 74 28 29 0d 09 2f 2f 20 | 49 6e 64 65 78 4f 66 49 |t()..// |IndexOfI|
|00002810| 74 65 6d 3a 09 09 09 75 | 73 65 20 61 6e 20 69 74 |tem:...u|se an it|
|00002820| 65 72 61 74 6f 72 20 61 | 6e 64 20 69 74 65 72 2e |erator a|nd iter.|
|00002830| 41 64 76 61 6e 63 65 54 | 6f 49 74 65 6d 28 29 0d |AdvanceT|oItem().|
|00002840| 09 2f 2f 0d 09 2f 2f 20 | 49 66 20 66 6f 72 20 73 |.//..// |If for s|
|00002850| 6f 6d 65 20 72 65 61 73 | 6f 6e 20 79 6f 75 20 68 |ome reas|on you h|
|00002860| 61 76 65 20 61 20 62 75 | 72 6e 69 6e 67 20 64 65 |ave a bu|rning de|
|00002870| 73 69 72 65 20 74 6f 20 | 4e 4f 54 20 75 73 65 20 |sire to |NOT use |
|00002880| 61 6e 0d 09 2f 2f 20 69 | 74 65 72 61 74 6f 72 2c |an..// i|terator,|
|00002890| 20 79 6f 75 20 6d 61 79 | 20 63 61 6c 6c 20 74 68 | you may| call th|
|000028a0| 65 73 65 20 72 6f 75 74 | 69 6e 65 73 20 69 66 20 |ese rout|ines if |
|000028b0| 79 6f 75 20 4c 6f 63 6b | 2f 52 65 6c 69 6e 71 75 |you Lock|/Relinqu|
|000028c0| 69 73 68 0d 09 2f 2f 20 | 74 68 69 73 20 6c 69 73 |ish..// |this lis|
|000028d0| 74 20 61 70 70 72 6f 70 | 72 69 61 74 65 6c 79 2c |t approp|riately,|
|000028e0| 20 62 75 74 20 79 6f 75 | 20 6d 75 73 74 20 64 6f | but you| must do|
|000028f0| 20 73 6f 20 63 61 72 65 | 66 75 6c 6c 79 20 69 66 | so care|fully if|
|00002900| 20 79 6f 75 0d 09 2f 2f | 20 77 61 6e 74 20 74 6f | you..//| want to|
|00002910| 20 61 76 6f 69 64 20 64 | 65 61 64 6c 6f 63 6b 2e | avoid d|eadlock.|
|00002920| 0d 09 2f 2f 0d 09 54 09 | 09 09 09 09 09 49 74 65 |..//..T.|.....Ite|
|00002930| 6d 41 74 49 6e 64 65 78 | 28 53 49 6e 74 33 32 20 |mAtIndex|(SInt32 |
|00002940| 69 74 65 6d 49 6e 64 65 | 78 29 20 63 6f 6e 73 74 |itemInde|x) const|
|00002950| 09 09 09 09 09 09 09 7b | 20 54 20 72 65 73 75 6c |.......{| T resul|
|00002960| 74 3b 20 66 4c 69 73 74 | 53 74 6f 72 61 67 65 2e |t; fList|Storage.|
|00002970| 49 74 65 6d 41 74 49 6e | 64 65 78 28 69 74 65 6d |ItemAtIn|dex(item|
|00002980| 49 6e 64 65 78 2c 20 28 | 63 68 61 72 2a 29 26 72 |Index, (|char*)&r|
|00002990| 65 73 75 6c 74 29 3b 20 | 72 65 74 75 72 6e 20 72 |esult); |return r|
|000029a0| 65 73 75 6c 74 3b 20 7d | 0d 09 76 6f 69 64 09 09 |esult; }|..void..|
|000029b0| 09 09 09 52 65 70 6c 61 | 63 65 49 74 65 6d 41 74 |...Repla|ceItemAt|
|000029c0| 49 6e 64 65 78 28 53 49 | 6e 74 33 32 20 69 74 65 |Index(SI|nt32 ite|
|000029d0| 6d 49 6e 64 65 78 2c 20 | 63 6f 6e 73 74 20 54 26 |mIndex, |const T&|
|000029e0| 20 6e 65 77 56 61 6c 75 | 65 29 09 09 7b 20 66 4c | newValu|e)..{ fL|
|000029f0| 69 73 74 53 74 6f 72 61 | 67 65 2e 52 65 70 6c 61 |istStora|ge.Repla|
|00002a00| 63 65 49 74 65 6d 41 74 | 49 6e 64 65 78 28 69 74 |ceItemAt|Index(it|
|00002a10| 65 6d 49 6e 64 65 78 2c | 20 28 63 68 61 72 2a 29 |emIndex,| (char*)|
|00002a20| 26 6e 65 77 56 61 6c 75 | 65 29 3b 20 7d 0d 09 76 |&newValu|e); }..v|
|00002a30| 6f 69 64 09 09 09 09 09 | 52 65 6d 6f 76 65 49 74 |oid.....|RemoveIt|
|00002a40| 65 6d 41 74 49 6e 64 65 | 78 28 53 49 6e 74 33 32 |emAtInde|x(SInt32|
|00002a50| 20 69 74 65 6d 49 6e 64 | 65 78 29 09 09 09 09 09 | itemInd|ex).....|
|00002a60| 09 09 7b 20 66 4c 69 73 | 74 53 74 6f 72 61 67 65 |..{ fLis|tStorage|
|00002a70| 2e 52 65 6d 6f 76 65 49 | 74 65 6d 41 74 49 6e 64 |.RemoveI|temAtInd|
|00002a80| 65 78 28 69 74 65 6d 49 | 6e 64 65 78 29 3b 20 7d |ex(itemI|ndex); }|
|00002a90| 0d 09 53 49 6e 74 33 32 | 09 09 09 09 09 49 6e 64 |..SInt32|.....Ind|
|00002aa0| 65 78 4f 66 49 74 65 6d | 28 63 6f 6e 73 74 20 54 |exOfItem|(const T|
|00002ab0| 26 20 69 74 65 6d 54 6f | 46 69 6e 64 2c 20 53 49 |& itemTo|Find, SI|
|00002ac0| 6e 74 33 32 20 73 74 61 | 72 74 41 74 20 3d 20 30 |nt32 sta|rtAt = 0|
|00002ad0| 29 20 63 6f 6e 73 74 09 | 7b 20 72 65 74 75 72 6e |) const.|{ return|
|00002ae0| 20 66 4c 69 73 74 53 74 | 6f 72 61 67 65 2e 49 6e | fListSt|orage.In|
|00002af0| 64 65 78 4f 66 49 74 65 | 6d 28 28 63 6f 6e 73 74 |dexOfIte|m((const|
|00002b00| 20 63 68 61 72 2a 29 26 | 69 74 65 6d 54 6f 46 69 | char*)&|itemToFi|
|00002b10| 6e 64 2c 20 43 6f 6d 70 | 61 72 65 54 77 6f 45 6c |nd, Comp|areTwoEl|
|00002b20| 65 6d 65 6e 74 73 2c 20 | 73 74 61 72 74 41 74 29 |ements, |startAt)|
|00002b30| 3b 20 7d 0d 0d 70 72 6f | 74 65 63 74 65 64 3a 0d |; }..pro|tected:.|
|00002b40| 09 73 74 61 74 69 63 20 | 42 6f 6f 6c 65 61 6e 09 |.static |Boolean.|
|00002b50| 09 09 43 6f 6d 70 61 72 | 65 54 77 6f 45 6c 65 6d |..Compar|eTwoElem|
|00002b60| 65 6e 74 73 28 63 6f 6e | 73 74 20 63 68 61 72 2a |ents(con|st char*|
|00002b70| 20 69 74 65 6d 31 2c 20 | 63 6f 6e 73 74 20 63 68 | item1, |const ch|
|00002b80| 61 72 2a 20 69 74 65 6d | 32 29 3b 0d 0d 09 2f 2f |ar* item|2);...//|
|00002b90| 0d 09 2f 2f 20 54 68 65 | 20 4c 69 73 74 53 74 6f |..// The| ListSto|
|00002ba0| 72 61 67 65 20 61 63 63 | 65 73 73 6f 72 20 69 73 |rage acc|essor is|
|00002bb0| 20 6f 6e 6c 79 20 75 73 | 65 64 20 62 79 20 41 6e | only us|ed by An|
|00002bc0| 49 74 65 72 61 74 6f 72 | 4f 66 41 4c 69 73 74 4f |Iterator|OfAListO|
|00002bd0| 66 0d 09 2f 2f 20 74 6f | 20 67 65 74 20 74 68 65 |f..// to| get the|
|00002be0| 20 6c 69 73 74 20 73 74 | 6f 72 61 67 65 20 74 6f | list st|orage to|
|00002bf0| 20 72 65 67 69 73 74 65 | 72 20 69 74 73 65 6c 66 | registe|r itself|
|00002c00| 20 77 69 74 68 20 74 68 | 65 20 6c 69 73 74 0d 09 | with th|e list..|
|00002c10| 2f 2f 20 73 74 6f 72 61 | 67 65 2e 0d 09 2f 2f 0d |// stora|ge...//.|
|00002c20| 09 54 4c 69 73 74 53 74 | 6f 72 61 67 65 26 09 09 |.TListSt|orage&..|
|00002c30| 09 4c 69 73 74 53 74 6f | 72 61 67 65 28 29 20 7b |.ListSto|rage() {|
|00002c40| 20 72 65 74 75 72 6e 20 | 66 4c 69 73 74 53 74 6f | return |fListSto|
|00002c50| 72 61 67 65 3b 20 7d 0d | 09 0d 70 72 69 76 61 74 |rage; }.|..privat|
|00002c60| 65 3a 0d 09 54 4c 69 73 | 74 53 74 6f 72 61 67 65 |e:..TLis|tStorage|
|00002c70| 09 09 09 66 4c 69 73 74 | 53 74 6f 72 61 67 65 3b |...fList|Storage;|
|00002c80| 0d 7d 3b 0d 0d 0d 2f 2f | 2d 2d 2d 2d 2d 2d 2d 2d |.};...//|--------|
|00002c90| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002ca0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002cb0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002cc0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 0d 2f 2f 20 41 |--------|---.// A|
|00002cd0| 4c 69 73 74 4f 66 3c 54 | 3e 3a 3a 43 6f 6d 70 61 |ListOf<T|>::Compa|
|00002ce0| 72 65 54 77 6f 45 6c 65 | 6d 65 6e 74 73 0d 2f 2f |reTwoEle|ments.//|
|00002cf0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002d00| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002d10| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002d20| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002d30| 2d 2d 2d 0d 74 65 6d 70 | 6c 61 74 65 20 3c 63 6c |---.temp|late <cl|
|00002d40| 61 73 73 20 54 3e 0d 42 | 6f 6f 6c 65 61 6e 20 41 |ass T>.B|oolean A|
|00002d50| 4c 69 73 74 4f 66 3c 54 | 3e 3a 3a 43 6f 6d 70 61 |ListOf<T|>::Compa|
|00002d60| 72 65 54 77 6f 45 6c 65 | 6d 65 6e 74 73 28 63 6f |reTwoEle|ments(co|
|00002d70| 6e 73 74 20 63 68 61 72 | 2a 20 69 74 65 6d 31 2c |nst char|* item1,|
|00002d80| 20 63 6f 6e 73 74 20 63 | 68 61 72 2a 20 69 74 65 | const c|har* ite|
|00002d90| 6d 32 29 0d 7b 0d 09 72 | 65 74 75 72 6e 20 28 28 |m2).{..r|eturn ((|
|00002da0| 54 2a 29 69 74 65 6d 31 | 29 20 3d 3d 20 28 28 54 |T*)item1|) == ((T|
|00002db0| 2a 29 69 74 65 6d 32 29 | 3b 0d 7d 0d 0d 0d 2f 2f |*)item2)|;.}...//|
|00002dc0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00002dd0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00002de0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00002df0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00002e00| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00002e10| 0d 2f 2f 20 43 4c 41 53 | 53 20 54 41 62 73 74 72 |.// CLAS|S TAbstr|
|00002e20| 61 63 74 4c 69 73 74 49 | 74 65 72 61 74 6f 72 0d |actListI|terator.|
|00002e30| 2f 2f 0d 2f 2f 20 41 62 | 73 74 72 61 63 74 20 62 |//.// Ab|stract b|
|00002e40| 61 73 65 20 63 6c 61 73 | 73 20 66 6f 72 20 69 74 |ase clas|s for it|
|00002e50| 65 72 61 74 6f 72 73 2c | 20 73 6f 20 74 68 61 74 |erators,| so that|
|00002e60| 20 77 65 20 6d 61 79 20 | 6b 65 65 70 20 74 72 61 | we may |keep tra|
|00002e70| 63 6b 20 6f 66 20 6f 75 | 72 0d 2f 2f 20 69 74 65 |ck of ou|r.// ite|
|00002e80| 72 61 74 6f 72 73 20 69 | 6e 20 6f 75 72 20 6c 69 |rators i|n our li|
|00002e90| 73 74 2d 73 74 6f 72 61 | 67 65 20 63 6c 61 73 73 |st-stora|ge class|
|00002ea0| 2e 0d 2f 2f 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |..//====|========|
|00002eb0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00002ec0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00002ed0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00002ee0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00002ef0| 3d 3d 3d 3d 0d 0d 63 6c | 61 73 73 20 54 41 62 73 |====..cl|ass TAbs|
|00002f00| 74 72 61 63 74 4c 69 73 | 74 49 74 65 72 61 74 6f |tractLis|tIterato|
|00002f10| 72 0d 7b 0d 70 75 62 6c | 69 63 3a 0d 09 76 69 72 |r.{.publ|ic:..vir|
|00002f20| 74 75 61 6c 20 76 6f 69 | 64 09 09 09 4e 6f 74 69 |tual voi|d...Noti|
|00002f30| 66 79 49 74 65 6d 41 64 | 64 65 64 28 53 49 6e 74 |fyItemAd|ded(SInt|
|00002f40| 33 32 20 69 6e 64 65 78 | 4f 66 4e 65 77 49 74 65 |32 index|OfNewIte|
|00002f50| 6d 29 20 3d 20 30 3b 0d | 09 76 69 72 74 75 61 6c |m) = 0;.|.virtual|
|00002f60| 20 76 6f 69 64 09 09 09 | 4e 6f 74 69 66 79 49 74 | void...|NotifyIt|
|00002f70| 65 6d 52 65 6d 6f 76 65 | 64 28 53 49 6e 74 33 32 |emRemove|d(SInt32|
|00002f80| 20 69 6e 64 65 78 4f 66 | 49 74 65 6d 52 65 6d 6f | indexOf|ItemRemo|
|00002f90| 76 65 64 29 20 3d 20 30 | 3b 0d 09 76 69 72 74 75 |ved) = 0|;..virtu|
|00002fa0| 61 6c 20 76 6f 69 64 09 | 09 09 4e 6f 74 69 66 79 |al void.|..Notify|
|00002fb0| 4c 69 73 74 44 65 73 74 | 72 6f 79 65 64 28 29 20 |ListDest|royed() |
|00002fc0| 3d 20 30 3b 0d 0d 70 72 | 6f 74 65 63 74 65 64 3a |= 0;..pr|otected:|
|00002fd0| 0d 09 76 6f 69 64 09 09 | 09 09 09 52 65 67 69 73 |..void..|...Regis|
|00002fe0| 74 65 72 57 69 74 68 4c | 69 73 74 28 54 4c 69 73 |terWithL|ist(TLis|
|00002ff0| 74 53 74 6f 72 61 67 65 | 26 20 6c 69 73 74 29 09 |tStorage|& list).|
|00003000| 09 7b 20 6c 69 73 74 2e | 41 64 64 49 74 65 72 61 |.{ list.|AddItera|
|00003010| 74 6f 72 28 74 68 69 73 | 29 3b 20 7d 0d 09 76 6f |tor(this|); }..vo|
|00003020| 69 64 09 09 09 09 09 55 | 6e 72 65 67 69 73 74 65 |id.....U|nregiste|
|00003030| 72 57 69 74 68 4c 69 73 | 74 28 54 4c 69 73 74 53 |rWithLis|t(TListS|
|00003040| 74 6f 72 61 67 65 26 20 | 6c 69 73 74 29 09 09 7b |torage& |list)..{|
|00003050| 20 6c 69 73 74 2e 52 65 | 6d 6f 76 65 49 74 65 72 | list.Re|moveIter|
|00003060| 61 74 6f 72 28 74 68 69 | 73 29 3b 20 7d 0d 7d 3b |ator(thi|s); }.};|
|00003070| 0d 0d 2f 2f 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |..//====|========|
|00003080| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00003090| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|000030a0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|000030b0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|000030c0| 3d 3d 3d 3d 0d 2f 2f 20 | 54 45 4d 50 4c 41 54 45 |====.// |TEMPLATE|
|000030d0| 20 41 6e 49 74 65 72 61 | 74 6f 72 4f 66 41 4c 69 | AnItera|torOfALi|
|000030e0| 73 74 4f 66 0d 2f 2f 3d | 3d 3d 3d 3d 3d 3d 3d 3d |stOf.//=|========|
|000030f0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00003100| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00003110| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00003120| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00003130| 3d 3d 3d 3d 3d 3d 3d 0d | 0d 74 65 6d 70 6c 61 74 |=======.|.templat|
|00003140| 65 20 3c 63 6c 61 73 73 | 20 54 3e 20 63 6c 61 73 |e <class| T> clas|
|00003150| 73 20 41 6e 49 74 65 72 | 61 74 6f 72 4f 66 41 4c |s AnIter|atorOfAL|
|00003160| 69 73 74 4f 66 20 3a 20 | 70 75 62 6c 69 63 20 54 |istOf : |public T|
|00003170| 41 62 73 74 72 61 63 74 | 4c 69 73 74 49 74 65 72 |Abstract|ListIter|
|00003180| 61 74 6f 72 0d 7b 0d 70 | 75 62 6c 69 63 3a 0d 09 |ator.{.p|ublic:..|
|00003190| 41 6e 49 74 65 72 61 74 | 6f 72 4f 66 41 4c 69 73 |AnIterat|orOfALis|
|000031a0| 74 4f 66 28 41 4c 69 73 | 74 4f 66 3c 54 3e 2a 20 |tOf(ALis|tOf<T>* |
|000031b0| 69 6e 4c 69 73 74 2c 20 | 42 6f 6f 6c 65 61 6e 20 |inList, |Boolean |
|000031c0| 69 74 65 72 61 74 65 42 | 61 63 6b 77 61 72 64 73 |iterateB|ackwards|
|000031d0| 20 3d 20 66 61 6c 73 65 | 29 20 3a 0d 09 09 66 4c | = false|) :...fL|
|000031e0| 69 73 74 28 69 6e 4c 69 | 73 74 29 2c 0d 09 09 66 |ist(inLi|st),...f|
|000031f0| 43 75 72 72 65 6e 74 49 | 74 65 6d 28 30 29 2c 0d |CurrentI|tem(0),.|
|00003200| 09 09 66 52 65 6d 6f 76 | 65 64 43 75 72 72 65 6e |..fRemov|edCurren|
|00003210| 74 28 66 61 6c 73 65 29 | 2c 0d 09 09 66 57 65 52 |t(false)|,...fWeR|
|00003220| 65 6d 6f 76 65 64 43 75 | 72 72 65 6e 74 28 66 61 |emovedCu|rrent(fa|
|00003230| 6c 73 65 29 2c 0d 09 09 | 66 49 74 65 72 61 74 65 |lse),...|fIterate|
|00003240| 42 61 63 6b 77 61 72 64 | 73 28 69 74 65 72 61 74 |Backward|s(iterat|
|00003250| 65 42 61 63 6b 77 61 72 | 64 73 29 20 7b 20 74 68 |eBackwar|ds) { th|
|00003260| 69 73 2d 3e 52 65 67 69 | 73 74 65 72 57 69 74 68 |is->Regi|sterWith|
|00003270| 4c 69 73 74 28 66 4c 69 | 73 74 2d 3e 4c 69 73 74 |List(fLi|st->List|
|00003280| 53 74 6f 72 61 67 65 28 | 29 29 3b 20 74 68 69 73 |Storage(|)); this|
|00003290| 2d 3e 52 65 73 65 74 28 | 69 74 65 72 61 74 65 42 |->Reset(|iterateB|
|000032a0| 61 63 6b 77 61 72 64 73 | 29 3b 20 7d 0d 09 0d 09 |ackwards|); }....|
|000032b0| 7e 41 6e 49 74 65 72 61 | 74 6f 72 4f 66 41 4c 69 |~AnItera|torOfALi|
|000032c0| 73 74 4f 66 28 29 20 7b | 20 74 68 69 73 2d 3e 55 |stOf() {| this->U|
|000032d0| 6e 72 65 67 69 73 74 65 | 72 57 69 74 68 4c 69 73 |nregiste|rWithLis|
|000032e0| 74 28 66 4c 69 73 74 2d | 3e 4c 69 73 74 53 74 6f |t(fList-|>ListSto|
|000032f0| 72 61 67 65 28 29 29 3b | 20 7d 0d 09 0d 09 76 6f |rage());| }....vo|
|00003300| 69 64 09 09 09 09 09 52 | 65 73 65 74 28 42 6f 6f |id.....R|eset(Boo|
|00003310| 6c 65 61 6e 20 69 74 65 | 72 61 74 65 42 61 63 6b |lean ite|rateBack|
|00003320| 77 61 72 64 73 20 3d 20 | 66 61 6c 73 65 29 3b 0d |wards = |false);.|
|00003330| 09 0d 09 42 6f 6f 6c 65 | 61 6e 09 09 09 09 09 4d |...Boole|an.....M|
|00003340| 6f 72 65 28 29 20 63 6f | 6e 73 74 3b 0d 09 55 49 |ore() co|nst;..UI|
|00003350| 6e 74 33 32 09 09 09 09 | 09 49 74 65 6d 73 52 65 |nt32....|.ItemsRe|
|00003360| 6d 61 69 6e 69 6e 67 54 | 6f 49 74 65 72 61 74 65 |mainingT|oIterate|
|00003370| 28 29 20 63 6f 6e 73 74 | 3b 0d 09 76 6f 69 64 09 |() const|;..void.|
|00003380| 09 09 09 09 4e 65 78 74 | 28 29 3b 0d 09 42 6f 6f |....Next|();..Boo|
|00003390| 6c 65 61 6e 09 09 09 09 | 09 41 64 76 61 6e 63 65 |lean....|.Advance|
|000033a0| 54 6f 49 74 65 6d 28 63 | 6f 6e 73 74 20 54 26 29 |ToItem(c|onst T&)|
|000033b0| 3b 0d 09 0d 09 63 6f 6e | 73 74 20 54 26 09 09 09 |;....con|st T&...|
|000033c0| 09 43 75 72 72 65 6e 74 | 28 29 20 63 6f 6e 73 74 |.Current|() const|
|000033d0| 3b 0d 09 76 6f 69 64 09 | 09 09 09 09 53 65 74 43 |;..void.|....SetC|
|000033e0| 75 72 72 65 6e 74 28 63 | 6f 6e 73 74 20 54 26 20 |urrent(c|onst T& |
|000033f0| 6e 65 77 56 61 6c 75 65 | 29 3b 0d 09 76 6f 69 64 |newValue|);..void|
|00003400| 09 09 09 09 09 52 65 6d | 6f 76 65 43 75 72 72 65 |.....Rem|oveCurre|
|00003410| 6e 74 28 29 3b 0d 09 0d | 09 76 69 72 74 75 61 6c |nt();...|.virtual|
|00003420| 20 76 6f 69 64 09 09 09 | 4e 6f 74 69 66 79 49 74 | void...|NotifyIt|
|00003430| 65 6d 41 64 64 65 64 28 | 53 49 6e 74 33 32 20 69 |emAdded(|SInt32 i|
|00003440| 6e 64 65 78 4f 66 4e 65 | 77 49 74 65 6d 29 3b 0d |ndexOfNe|wItem);.|
|00003450| 09 76 69 72 74 75 61 6c | 20 76 6f 69 64 09 09 09 |.virtual| void...|
|00003460| 4e 6f 74 69 66 79 49 74 | 65 6d 52 65 6d 6f 76 65 |NotifyIt|emRemove|
|00003470| 64 28 53 49 6e 74 33 32 | 20 69 6e 64 65 78 4f 66 |d(SInt32| indexOf|
|00003480| 49 74 65 6d 52 65 6d 6f | 76 65 64 29 3b 0d 09 76 |ItemRemo|ved);..v|
|00003490| 69 72 74 75 61 6c 20 76 | 6f 69 64 09 09 09 4e 6f |irtual v|oid...No|
|000034a0| 74 69 66 79 4c 69 73 74 | 44 65 73 74 72 6f 79 65 |tifyList|Destroye|
|000034b0| 64 28 29 3b 0d 09 0d 70 | 72 69 76 61 74 65 3a 0d |d();...p|rivate:.|
|000034c0| 09 41 4c 69 73 74 4f 66 | 3c 54 3e 2a 09 09 09 09 |.AListOf|<T>*....|
|000034d0| 66 4c 69 73 74 3b 0d 09 | 53 49 6e 74 33 32 09 09 |fList;..|SInt32..|
|000034e0| 09 09 09 66 43 75 72 72 | 65 6e 74 49 74 65 6d 3b |...fCurr|entItem;|
|000034f0| 0d 09 42 6f 6f 6c 65 61 | 6e 09 09 09 09 09 66 52 |..Boolea|n.....fR|
|00003500| 65 6d 6f 76 65 64 43 75 | 72 72 65 6e 74 3b 0d 09 |emovedCu|rrent;..|
|00003510| 42 6f 6f 6c 65 61 6e 09 | 09 09 09 09 66 57 65 52 |Boolean.|....fWeR|
|00003520| 65 6d 6f 76 65 64 43 75 | 72 72 65 6e 74 3b 0d 09 |emovedCu|rrent;..|
|00003530| 42 6f 6f 6c 65 61 6e 09 | 09 09 09 09 66 49 74 65 |Boolean.|....fIte|
|00003540| 72 61 74 65 42 61 63 6b | 77 61 72 64 73 3b 0d 7d |rateBack|wards;.}|
|00003550| 3b 0d 0d 2f 2f 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |;..//---|--------|
|00003560| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003570| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003580| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003590| 2d 2d 2d 2d 2d 2d 2d 2d | 0d 2f 2f 20 41 6e 49 74 |--------|.// AnIt|
|000035a0| 65 72 61 74 6f 72 4f 66 | 41 4c 69 73 74 4f 66 3c |eratorOf|AListOf<|
|000035b0| 54 3e 3a 3a 52 65 73 65 | 74 0d 2f 2f 2d 2d 2d 2d |T>::Rese|t.//----|
|000035c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000035d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000035e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000035f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 0d |--------|-------.|
|00003600| 74 65 6d 70 6c 61 74 65 | 20 3c 63 6c 61 73 73 20 |template| <class |
|00003610| 54 3e 0d 76 6f 69 64 20 | 41 6e 49 74 65 72 61 74 |T>.void |AnIterat|
|00003620| 6f 72 4f 66 41 4c 69 73 | 74 4f 66 3c 54 3e 3a 3a |orOfALis|tOf<T>::|
|00003630| 52 65 73 65 74 28 42 6f | 6f 6c 65 61 6e 20 69 74 |Reset(Bo|olean it|
|00003640| 65 72 61 74 65 42 61 63 | 6b 77 61 72 64 73 29 0d |erateBac|kwards).|
|00003650| 7b 0d 09 69 66 28 66 4c | 69 73 74 20 21 3d 20 6e |{..if(fL|ist != n|
|00003660| 69 6c 29 0d 09 7b 0d 09 | 09 66 4c 69 73 74 2d 3e |il)..{..|.fList->|
|00003670| 4c 6f 63 6b 46 6f 72 52 | 65 61 64 69 6e 67 28 29 |LockForR|eading()|
|00003680| 3b 0d 09 09 66 49 74 65 | 72 61 74 65 42 61 63 6b |;...fIte|rateBack|
|00003690| 77 61 72 64 73 20 3d 20 | 69 74 65 72 61 74 65 42 |wards = |iterateB|
|000036a0| 61 63 6b 77 61 72 64 73 | 3b 0d 09 09 0d 09 09 69 |ackwards|;......i|
|000036b0| 66 28 66 49 74 65 72 61 | 74 65 42 61 63 6b 77 61 |f(fItera|teBackwa|
|000036c0| 72 64 73 29 0d 09 09 09 | 66 43 75 72 72 65 6e 74 |rds)....|fCurrent|
|000036d0| 49 74 65 6d 20 3d 20 66 | 4c 69 73 74 2d 3e 49 74 |Item = f|List->It|
|000036e0| 65 6d 73 49 6e 4c 69 73 | 74 28 29 20 2d 20 31 3b |emsInLis|t() - 1;|
|000036f0| 0d 09 09 65 6c 73 65 0d | 09 09 09 66 43 75 72 72 |...else.|...fCurr|
|00003700| 65 6e 74 49 74 65 6d 20 | 3d 20 30 3b 0d 09 09 66 |entItem |= 0;...f|
|00003710| 4c 69 73 74 2d 3e 52 65 | 6c 69 6e 71 75 69 73 68 |List->Re|linquish|
|00003720| 52 65 61 64 4c 6f 63 6b | 28 29 3b 0d 09 7d 0d 7d |ReadLock|();..}.}|
|00003730| 0d 0d 2f 2f 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |..//----|--------|
|00003740| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003750| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003760| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003770| 2d 2d 2d 2d 2d 2d 2d 0d | 2f 2f 20 41 6e 49 74 65 |-------.|// AnIte|
|00003780| 72 61 74 6f 72 4f 66 41 | 4c 69 73 74 4f 66 3c 54 |ratorOfA|ListOf<T|
|00003790| 3e 3a 3a 4d 6f 72 65 0d | 2f 2f 2d 2d 2d 2d 2d 2d |>::More.|//------|
|000037a0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000037b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000037c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000037d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 0d 74 65 |--------|-----.te|
|000037e0| 6d 70 6c 61 74 65 20 3c | 63 6c 61 73 73 20 54 3e |mplate <|class T>|
|000037f0| 0d 42 6f 6f 6c 65 61 6e | 20 41 6e 49 74 65 72 61 |.Boolean| AnItera|
|00003800| 74 6f 72 4f 66 41 4c 69 | 73 74 4f 66 3c 54 3e 3a |torOfALi|stOf<T>:|
|00003810| 3a 4d 6f 72 65 28 29 20 | 63 6f 6e 73 74 0d 7b 0d |:More() |const.{.|
|00003820| 09 42 6f 6f 6c 65 61 6e | 20 6d 6f 72 65 49 74 65 |.Boolean| moreIte|
|00003830| 6d 73 20 3d 20 66 61 6c | 73 65 3b 0d 09 0d 09 69 |ms = fal|se;....i|
|00003840| 66 28 66 4c 69 73 74 20 | 21 3d 20 6e 69 6c 29 0d |f(fList |!= nil).|
|00003850| 09 7b 0d 09 09 66 4c 69 | 73 74 2d 3e 4c 6f 63 6b |.{...fLi|st->Lock|
|00003860| 46 6f 72 52 65 61 64 69 | 6e 67 28 29 3b 0d 09 09 |ForReadi|ng();...|
|00003870| 6d 6f 72 65 49 74 65 6d | 73 20 3d 20 28 66 43 75 |moreItem|s = (fCu|
|00003880| 72 72 65 6e 74 49 74 65 | 6d 20 3c 20 66 4c 69 73 |rrentIte|m < fLis|
|00003890| 74 2d 3e 49 74 65 6d 73 | 49 6e 4c 69 73 74 28 29 |t->Items|InList()|
|000038a0| 29 20 26 26 20 28 66 43 | 75 72 72 65 6e 74 49 74 |) && (fC|urrentIt|
|000038b0| 65 6d 20 3e 3d 20 30 29 | 3b 0d 09 09 66 4c 69 73 |em >= 0)|;...fLis|
|000038c0| 74 2d 3e 52 65 6c 69 6e | 71 75 69 73 68 52 65 61 |t->Relin|quishRea|
|000038d0| 64 4c 6f 63 6b 28 29 3b | 0d 09 7d 0d 09 0d 09 72 |dLock();|..}....r|
|000038e0| 65 74 75 72 6e 20 6d 6f | 72 65 49 74 65 6d 73 3b |eturn mo|reItems;|
|000038f0| 0d 7d 0d 0d 2f 2f 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |.}..//--|--------|
|00003900| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003910| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003920| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003930| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 0d 2f 2f 20 41 6e 49 |--------|-.// AnI|
|00003940| 74 65 72 61 74 6f 72 4f | 66 41 4c 69 73 74 4f 66 |teratorO|fAListOf|
|00003950| 3c 54 3e 3a 3a 49 74 65 | 6d 73 52 65 6d 61 69 6e |<T>::Ite|msRemain|
|00003960| 69 6e 67 54 6f 49 74 65 | 72 61 74 65 0d 2f 2f 2d |ingToIte|rate.//-|
|00003970| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003980| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003990| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000039a0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000039b0| 2d 2d 0d 74 65 6d 70 6c | 61 74 65 20 3c 63 6c 61 |--.templ|ate <cla|
|000039c0| 73 73 20 54 3e 0d 55 49 | 6e 74 33 32 20 41 6e 49 |ss T>.UI|nt32 AnI|
|000039d0| 74 65 72 61 74 6f 72 4f | 66 41 4c 69 73 74 4f 66 |teratorO|fAListOf|
|000039e0| 3c 54 3e 3a 3a 49 74 65 | 6d 73 52 65 6d 61 69 6e |<T>::Ite|msRemain|
|000039f0| 69 6e 67 54 6f 49 74 65 | 72 61 74 65 28 29 20 63 |ingToIte|rate() c|
|00003a00| 6f 6e 73 74 0d 7b 0d 09 | 55 49 6e 74 33 32 20 72 |onst.{..|UInt32 r|
|00003a10| 65 6d 61 69 6e 69 6e 67 | 49 74 65 6d 73 20 3d 20 |emaining|Items = |
|00003a20| 30 3b 0d 09 0d 09 69 66 | 28 66 4c 69 73 74 20 21 |0;....if|(fList !|
|00003a30| 3d 20 6e 69 6c 29 0d 09 | 7b 0d 09 09 69 66 28 66 |= nil)..|{...if(f|
|00003a40| 49 74 65 72 61 74 65 42 | 61 63 6b 77 61 72 64 73 |IterateB|ackwards|
|00003a50| 29 0d 09 09 09 72 65 6d | 61 69 6e 69 6e 67 49 74 |)....rem|ainingIt|
|00003a60| 65 6d 73 20 3d 20 66 43 | 75 72 72 65 6e 74 49 74 |ems = fC|urrentIt|
|00003a70| 65 6d 20 2b 20 31 3b 0d | 09 09 65 6c 73 65 0d 09 |em + 1;.|..else..|
|00003a80| 09 7b 0d 09 09 09 66 4c | 69 73 74 2d 3e 4c 6f 63 |.{....fL|ist->Loc|
|00003a90| 6b 46 6f 72 52 65 61 64 | 69 6e 67 28 29 3b 0d 09 |kForRead|ing();..|
|00003aa0| 09 09 53 49 6e 74 33 32 | 20 74 6f 74 61 6c 49 74 |..SInt32| totalIt|
|00003ab0| 65 6d 73 20 3d 20 66 4c | 69 73 74 2d 3e 49 74 65 |ems = fL|ist->Ite|
|00003ac0| 6d 73 49 6e 4c 69 73 74 | 28 29 3b 0d 09 09 09 66 |msInList|();....f|
|00003ad0| 4c 69 73 74 2d 3e 52 65 | 6c 69 6e 71 75 69 73 68 |List->Re|linquish|
|00003ae0| 52 65 61 64 4c 6f 63 6b | 28 29 3b 0d 09 09 09 0d |ReadLock|();.....|
|00003af0| 09 09 09 72 65 6d 61 69 | 6e 69 6e 67 49 74 65 6d |...remai|ningItem|
|00003b00| 73 20 3d 20 74 6f 74 61 | 6c 49 74 65 6d 73 20 2d |s = tota|lItems -|
|00003b10| 20 66 43 75 72 72 65 6e | 74 49 74 65 6d 3b 0d 09 | fCurren|tItem;..|
|00003b20| 09 7d 0d 09 7d 0d 09 0d | 09 72 65 74 75 72 6e 20 |.}..}...|.return |
|00003b30| 72 65 6d 61 69 6e 69 6e | 67 49 74 65 6d 73 3b 0d |remainin|gItems;.|
|00003b40| 7d 0d 0d 2f 2f 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |}..//---|--------|
|00003b50| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003b60| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003b70| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003b80| 2d 2d 2d 2d 2d 2d 2d 2d | 0d 2f 2f 20 41 6e 49 74 |--------|.// AnIt|
|00003b90| 65 72 61 74 6f 72 4f 66 | 41 4c 69 73 74 4f 66 3c |eratorOf|AListOf<|
|00003ba0| 54 3e 3a 3a 4e 65 78 74 | 0d 2f 2f 2d 2d 2d 2d 2d |T>::Next|.//-----|
|00003bb0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003bc0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003bd0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003be0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 0d 74 |--------|------.t|
|00003bf0| 65 6d 70 6c 61 74 65 20 | 3c 63 6c 61 73 73 20 54 |emplate |<class T|
|00003c00| 3e 0d 76 6f 69 64 20 41 | 6e 49 74 65 72 61 74 6f |>.void A|nIterato|
|00003c10| 72 4f 66 41 4c 69 73 74 | 4f 66 3c 54 3e 3a 3a 4e |rOfAList|Of<T>::N|
|00003c20| 65 78 74 28 29 0d 7b 0d | 09 69 66 28 66 4c 69 73 |ext().{.|.if(fLis|
|00003c30| 74 20 21 3d 20 6e 69 6c | 29 0d 09 7b 0d 09 09 2f |t != nil|)..{.../|
|00003c40| 2f 0d 09 09 2f 2f 20 57 | 65 20 6d 75 73 74 20 6c |/...// W|e must l|
|00003c50| 6f 63 6b 20 66 6f 72 20 | 72 65 61 64 69 6e 67 20 |ock for |reading |
|00003c60| 73 6f 20 74 68 61 74 20 | 73 6f 6d 65 6f 6e 65 20 |so that |someone |
|00003c70| 64 6f 65 73 20 6e 6f 74 | 0d 09 09 2f 2f 20 63 6f |does not|...// co|
|00003c80| 6d 65 20 61 6c 6f 6e 67 | 20 61 6e 64 20 63 68 61 |me along| and cha|
|00003c90| 6e 67 65 20 74 68 65 20 | 6c 69 73 74 20 28 6d 6f |nge the |list (mo|
|00003ca0| 64 69 66 79 69 6e 67 20 | 6f 75 72 0d 09 09 2f 2f |difying |our...//|
|00003cb0| 20 66 43 75 72 72 65 6e | 74 49 74 65 6d 29 20 77 | fCurren|tItem) w|
|00003cc0| 68 69 6c 65 20 77 65 20 | 61 72 65 20 75 70 64 61 |hile we |are upda|
|00003cd0| 74 69 6e 67 20 6f 75 72 | 20 69 74 65 72 61 74 69 |ting our| iterati|
|00003ce0| 6f 6e 0d 09 09 2f 2f 20 | 73 74 61 74 65 2e 0d 09 |on...// |state...|
|00003cf0| 09 2f 2f 0d 09 09 66 4c | 69 73 74 2d 3e 4c 6f 63 |.//...fL|ist->Loc|
|00003d00| 6b 46 6f 72 52 65 61 64 | 69 6e 67 28 29 3b 0d 09 |kForRead|ing();..|
|00003d10| 09 69 66 28 28 66 52 65 | 6d 6f 76 65 64 43 75 72 |.if((fRe|movedCur|
|00003d20| 72 65 6e 74 20 3d 3d 20 | 66 61 6c 73 65 29 20 26 |rent == |false) &|
|00003d30| 26 20 28 74 68 69 73 2d | 3e 4d 6f 72 65 28 29 29 |& (this-|>More())|
|00003d40| 29 0d 09 09 7b 0d 09 09 | 09 69 66 28 66 49 74 65 |)...{...|.if(fIte|
|00003d50| 72 61 74 65 42 61 63 6b | 77 61 72 64 73 29 0d 09 |rateBack|wards)..|
|00003d60| 09 09 09 2d 2d 66 43 75 | 72 72 65 6e 74 49 74 65 |...--fCu|rrentIte|
|00003d70| 6d 3b 0d 09 09 09 65 6c | 73 65 0d 09 09 09 09 2b |m;....el|se.....+|
|00003d80| 2b 66 43 75 72 72 65 6e | 74 49 74 65 6d 3b 0d 09 |+fCurren|tItem;..|
|00003d90| 09 7d 0d 09 09 66 52 65 | 6d 6f 76 65 64 43 75 72 |.}...fRe|movedCur|
|00003da0| 72 65 6e 74 20 3d 20 66 | 61 6c 73 65 3b 0d 09 09 |rent = f|alse;...|
|00003db0| 66 4c 69 73 74 2d 3e 52 | 65 6c 69 6e 71 75 69 73 |fList->R|elinquis|
|00003dc0| 68 52 65 61 64 4c 6f 63 | 6b 28 29 3b 0d 09 7d 0d |hReadLoc|k();..}.|
|00003dd0| 7d 0d 0d 2f 2f 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |}..//---|--------|
|00003de0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003df0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003e00| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003e10| 2d 2d 2d 2d 2d 2d 2d 2d | 0d 2f 2f 20 41 6e 49 74 |--------|.// AnIt|
|00003e20| 65 72 61 74 6f 72 4f 66 | 41 4c 69 73 74 4f 66 3c |eratorOf|AListOf<|
|00003e30| 54 3e 3a 3a 41 64 76 61 | 6e 63 65 54 6f 49 74 65 |T>::Adva|nceToIte|
|00003e40| 6d 0d 2f 2f 0d 2f 2f 20 | 6e 2e 62 2e 20 49 66 20 |m.//.// |n.b. If |
|00003e50| 43 75 72 72 65 6e 74 28 | 29 20 3d 3d 20 69 74 65 |Current(|) == ite|
|00003e60| 6d 54 6f 46 69 6e 64 2c | 20 74 68 65 6e 20 74 68 |mToFind,| then th|
|00003e70| 69 73 20 72 6f 75 74 69 | 6e 65 20 77 69 6c 6c 20 |is routi|ne will |
|00003e80| 4e 4f 54 0d 2f 2f 20 61 | 64 76 61 6e 63 65 20 61 |NOT.// a|dvance a|
|00003e90| 6e 79 77 68 65 72 65 2c | 20 73 6f 20 63 61 6c 20 |nywhere,| so cal |
|00003ea0| 4e 65 78 74 28 29 20 62 | 65 74 77 65 65 6e 20 63 |Next() b|etween c|
|00003eb0| 61 6c 6c 73 20 74 6f 20 | 41 64 76 61 6e 63 65 54 |alls to |AdvanceT|
|00003ec0| 6f 49 74 65 6d 28 29 0d | 2f 2f 20 69 66 20 79 6f |oItem().|// if yo|
|00003ed0| 75 20 6e 65 65 64 20 74 | 6f 20 66 69 6e 64 20 65 |u need t|o find e|
|00003ee0| 76 65 72 79 20 69 74 65 | 6d 20 6f 66 20 61 20 67 |very ite|m of a g|
|00003ef0| 69 76 65 6e 20 76 61 6c | 75 65 20 69 6e 20 61 20 |iven val|ue in a |
|00003f00| 6c 69 73 74 2e 0d 2f 2f | 0d 2f 2f 20 66 43 75 72 |list..//|.// fCur|
|00003f10| 72 65 6e 74 49 74 65 6d | 20 73 74 61 72 74 73 20 |rentItem| starts |
|00003f20| 61 74 20 74 68 65 20 66 | 69 72 73 74 20 69 74 65 |at the f|irst ite|
|00003f30| 6d 20 69 6e 20 74 68 65 | 20 6c 69 73 74 2c 20 73 |m in the| list, s|
|00003f40| 6f 20 74 68 69 73 0d 2f | 2f 20 72 6f 75 74 69 6e |o this./|/ routin|
|00003f50| 65 20 77 6f 75 6c 64 6e | 27 74 20 62 65 20 61 62 |e wouldn|'t be ab|
|00003f60| 6c 65 20 74 6f 20 66 69 | 6e 64 20 74 68 65 20 66 |le to fi|nd the f|
|00003f70| 69 72 73 74 20 69 74 65 | 6d 20 69 6e 20 61 20 6c |irst ite|m in a l|
|00003f80| 69 73 74 0d 2f 2f 20 69 | 66 20 69 74 20 73 6b 69 |ist.// i|f it ski|
|00003f90| 70 70 65 64 20 74 68 65 | 20 63 75 72 72 65 6e 74 |pped the| current|
|00003fa0| 20 69 74 65 6d 20 62 65 | 66 6f 72 65 20 73 65 61 | item be|fore sea|
|00003fb0| 72 63 68 69 6e 67 2e 0d | 2f 2f 2d 2d 2d 2d 2d 2d |rching..|//------|
|00003fc0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003fd0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003fe0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003ff0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 0d 74 65 |--------|-----.te|
|00004000| 6d 70 6c 61 74 65 20 3c | 63 6c 61 73 73 20 54 3e |mplate <|class T>|
|00004010| 0d 42 6f 6f 6c 65 61 6e | 20 41 6e 49 74 65 72 61 |.Boolean| AnItera|
|00004020| 74 6f 72 4f 66 41 4c 69 | 73 74 4f 66 3c 54 3e 3a |torOfALi|stOf<T>:|
|00004030| 3a 41 64 76 61 6e 63 65 | 54 6f 49 74 65 6d 28 63 |:Advance|ToItem(c|
|00004040| 6f 6e 73 74 20 54 26 20 | 69 74 65 6d 54 6f 46 69 |onst T& |itemToFi|
|00004050| 6e 64 29 0d 7b 0d 09 42 | 6f 6f 6c 65 61 6e 20 66 |nd).{..B|oolean f|
|00004060| 6f 75 6e 64 49 74 65 6d | 20 3d 20 66 61 6c 73 65 |oundItem| = false|
|00004070| 3b 0d 09 0d 09 69 66 28 | 66 4c 69 73 74 20 21 3d |;....if(|fList !=|
|00004080| 20 6e 69 6c 29 0d 09 7b | 0d 09 09 69 66 28 66 49 | nil)..{|...if(fI|
|00004090| 74 65 72 61 74 65 42 61 | 63 6b 77 61 72 64 73 20 |terateBa|ckwards |
|000040a0| 3d 3d 20 74 72 75 65 29 | 0d 09 09 7b 0d 09 09 09 |== true)|...{....|
|000040b0| 44 65 62 75 67 53 74 72 | 28 22 5c 70 41 64 76 61 |DebugStr|("\pAdva|
|000040c0| 6e 63 65 54 6f 49 74 65 | 6d 20 64 6f 65 73 6e 27 |nceToIte|m doesn'|
|000040d0| 74 20 77 6f 72 6b 20 72 | 69 67 68 74 20 77 68 65 |t work r|ight whe|
|000040e0| 6e 20 69 74 65 72 61 74 | 69 6e 67 20 62 61 63 6b |n iterat|ing back|
|000040f0| 77 61 72 64 73 2e 20 20 | 73 77 69 74 63 68 69 6e |wards. |switchin|
|00004100| 67 20 74 6f 20 66 6f 72 | 77 61 72 64 20 69 74 65 |g to for|ward ite|
|00004110| 72 61 74 69 6f 6e 22 29 | 3b 0d 09 09 09 74 68 69 |ration")|;....thi|
|00004120| 73 2d 3e 52 65 73 65 74 | 28 66 61 6c 73 65 29 3b |s->Reset|(false);|
|00004130| 20 0d 09 09 7d 0d 09 09 | 0d 09 09 66 4c 69 73 74 | ...}...|...fList|
|00004140| 2d 3e 4c 6f 63 6b 46 6f | 72 52 65 61 64 69 6e 67 |->LockFo|rReading|
|00004150| 28 29 3b 0d 09 09 53 49 | 6e 74 33 32 20 66 6f 75 |();...SI|nt32 fou|
|00004160| 6e 64 49 6e 64 65 78 20 | 3d 20 66 4c 69 73 74 2d |ndIndex |= fList-|
|00004170| 3e 49 6e 64 65 78 4f 66 | 49 74 65 6d 28 69 74 65 |>IndexOf|Item(ite|
|00004180| 6d 54 6f 46 69 6e 64 2c | 20 66 43 75 72 72 65 6e |mToFind,| fCurren|
|00004190| 74 49 74 65 6d 29 3b 0d | 09 09 69 66 28 66 6f 75 |tItem);.|..if(fou|
|000041a0| 6e 64 49 6e 64 65 78 20 | 21 3d 20 2d 31 29 0d 09 |ndIndex |!= -1)..|
|000041b0| 09 7b 0d 09 09 09 66 43 | 75 72 72 65 6e 74 49 74 |.{....fC|urrentIt|
|000041c0| 65 6d 20 3d 20 66 6f 75 | 6e 64 49 6e 64 65 78 3b |em = fou|ndIndex;|
|000041d0| 0d 09 09 09 66 6f 75 6e | 64 49 74 65 6d 20 3d 20 |....foun|dItem = |
|000041e0| 74 72 75 65 3b 0d 09 09 | 7d 0d 09 09 66 4c 69 73 |true;...|}...fLis|
|000041f0| 74 2d 3e 52 65 6c 69 6e | 71 75 69 73 68 52 65 61 |t->Relin|quishRea|
|00004200| 64 4c 6f 63 6b 28 29 3b | 0d 09 7d 0d 09 0d 09 72 |dLock();|..}....r|
|00004210| 65 74 75 72 6e 20 66 6f | 75 6e 64 49 74 65 6d 3b |eturn fo|undItem;|
|00004220| 0d 7d 0d 0d 2f 2f 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |.}..//--|--------|
|00004230| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004240| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004250| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004260| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 0d 2f 2f 20 41 6e 49 |--------|-.// AnI|
|00004270| 74 65 72 61 74 6f 72 4f | 66 41 4c 69 73 74 4f 66 |teratorO|fAListOf|
|00004280| 3c 54 3e 3a 3a 43 75 72 | 72 65 6e 74 0d 2f 2f 2d |<T>::Cur|rent.//-|
|00004290| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000042a0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000042b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000042c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000042d0| 2d 2d 0d 74 65 6d 70 6c | 61 74 65 20 3c 63 6c 61 |--.templ|ate <cla|
|000042e0| 73 73 20 54 3e 0d 63 6f | 6e 73 74 20 54 26 20 41 |ss T>.co|nst T& A|
|000042f0| 6e 49 74 65 72 61 74 6f | 72 4f 66 41 4c 69 73 74 |nIterato|rOfAList|
|00004300| 4f 66 3c 54 3e 3a 3a 43 | 75 72 72 65 6e 74 28 29 |Of<T>::C|urrent()|
|00004310| 20 63 6f 6e 73 74 0d 7b | 0d 09 54 20 72 65 73 75 | const.{|..T resu|
|00004320| 6c 74 3b 0d 09 0d 09 69 | 66 28 66 4c 69 73 74 20 |lt;....i|f(fList |
|00004330| 21 3d 20 6e 69 6c 29 0d | 09 7b 0d 09 09 2f 2f 0d |!= nil).|.{...//.|
|00004340| 09 09 2f 2f 20 57 65 20 | 6d 75 73 74 20 6c 6f 63 |..// We |must loc|
|00004350| 6b 20 66 6f 72 20 72 65 | 61 64 69 6e 67 20 73 6f |k for re|ading so|
|00004360| 20 74 68 61 74 20 73 6f | 6d 65 6f 6e 65 20 64 6f | that so|meone do|
|00004370| 65 73 20 6e 6f 74 0d 09 | 09 2f 2f 20 63 68 61 6e |es not..|.// chan|
|00004380| 67 65 20 74 68 65 20 6c | 69 73 74 20 69 6e 20 62 |ge the l|ist in b|
|00004390| 65 74 77 65 65 6e 20 74 | 68 65 20 74 69 6d 65 20 |etween t|he time |
|000043a0| 77 65 20 61 63 63 65 73 | 73 20 6f 75 72 0d 09 09 |we acces|s our...|
|000043b0| 2f 2f 20 66 69 65 6c 64 | 20 66 43 75 72 72 65 6e |// field| fCurren|
|000043c0| 74 49 74 65 6d 20 61 6e | 64 20 74 68 65 20 74 69 |tItem an|d the ti|
|000043d0| 6d 65 20 74 68 61 74 20 | 49 74 65 6d 41 74 49 6e |me that |ItemAtIn|
|000043e0| 64 65 78 0d 09 09 2f 2f | 20 72 65 74 75 72 6e 73 |dex...//| returns|
|000043f0| 2e 0d 09 09 2f 2f 0d 09 | 09 66 4c 69 73 74 2d 3e |....//..|.fList->|
|00004400| 4c 6f 63 6b 46 6f 72 52 | 65 61 64 69 6e 67 28 29 |LockForR|eading()|
|00004410| 3b 0d 09 09 72 65 73 75 | 6c 74 20 3d 20 66 4c 69 |;...resu|lt = fLi|
|00004420| 73 74 2d 3e 49 74 65 6d | 41 74 49 6e 64 65 78 28 |st->Item|AtIndex(|
|00004430| 66 43 75 72 72 65 6e 74 | 49 74 65 6d 29 3b 0d 09 |fCurrent|Item);..|
|00004440| 09 66 4c 69 73 74 2d 3e | 52 65 6c 69 6e 71 75 69 |.fList->|Relinqui|
|00004450| 73 68 52 65 61 64 4c 6f | 63 6b 28 29 3b 0d 09 7d |shReadLo|ck();..}|
|00004460| 0d 09 0d 09 72 65 74 75 | 72 6e 20 72 65 73 75 6c |....retu|rn resul|
|00004470| 74 3b 0d 7d 0d 0d 2f 2f | 2d 2d 2d 2d 2d 2d 2d 2d |t;.}..//|--------|
|00004480| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004490| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000044a0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000044b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 0d 2f 2f 20 41 |--------|---.// A|
|000044c0| 6e 49 74 65 72 61 74 6f | 72 4f 66 41 4c 69 73 74 |nIterato|rOfAList|
|000044d0| 4f 66 3c 54 3e 3a 3a 53 | 65 74 43 75 72 72 65 6e |Of<T>::S|etCurren|
|000044e0| 74 0d 2f 2f 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |t.//----|--------|
|000044f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004500| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004510| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004520| 2d 2d 2d 2d 2d 2d 2d 0d | 74 65 6d 70 6c 61 74 65 |-------.|template|
|00004530| 20 3c 63 6c 61 73 73 20 | 54 3e 0d 76 6f 69 64 20 | <class |T>.void |
|00004540| 41 6e 49 74 65 72 61 74 | 6f 72 4f 66 41 4c 69 73 |AnIterat|orOfALis|
|00004550| 74 4f 66 3c 54 3e 3a 3a | 53 65 74 43 75 72 72 65 |tOf<T>::|SetCurre|
|00004560| 6e 74 28 63 6f 6e 73 74 | 20 54 26 20 6e 65 77 56 |nt(const| T& newV|
|00004570| 61 6c 75 65 29 0d 7b 0d | 09 69 66 28 66 4c 69 73 |alue).{.|.if(fLis|
|00004580| 74 20 21 3d 20 6e 69 6c | 29 0d 09 7b 0d 09 09 66 |t != nil|)..{...f|
|00004590| 4c 69 73 74 2d 3e 4c 6f | 63 6b 46 6f 72 57 72 69 |List->Lo|ckForWri|
|000045a0| 74 69 6e 67 28 29 3b 0d | 09 09 66 4c 69 73 74 2d |ting();.|..fList-|
|000045b0| 3e 52 65 70 6c 61 63 65 | 49 74 65 6d 41 74 49 6e |>Replace|ItemAtIn|
|000045c0| 64 65 78 28 66 43 75 72 | 72 65 6e 74 49 74 65 6d |dex(fCur|rentItem|
|000045d0| 2c 20 6e 65 77 56 61 6c | 75 65 29 3b 0d 09 09 66 |, newVal|ue);...f|
|000045e0| 4c 69 73 74 2d 3e 52 65 | 6c 69 6e 71 75 69 73 68 |List->Re|linquish|
|000045f0| 57 72 69 74 65 4c 6f 63 | 6b 28 29 3b 0d 09 7d 0d |WriteLoc|k();..}.|
|00004600| 7d 0d 0d 2f 2f 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |}..//---|--------|
|00004610| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004620| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004630| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004640| 2d 2d 2d 2d 2d 2d 2d 2d | 0d 2f 2f 20 41 6e 49 74 |--------|.// AnIt|
|00004650| 65 72 61 74 6f 72 4f 66 | 41 4c 69 73 74 4f 66 3c |eratorOf|AListOf<|
|00004660| 54 3e 3a 3a 52 65 6d 6f | 76 65 43 75 72 72 65 6e |T>::Remo|veCurren|
|00004670| 74 0d 2f 2f 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |t.//----|--------|
|00004680| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004690| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000046a0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000046b0| 2d 2d 2d 2d 2d 2d 2d 0d | 74 65 6d 70 6c 61 74 65 |-------.|template|
|000046c0| 20 3c 63 6c 61 73 73 20 | 54 3e 0d 76 6f 69 64 20 | <class |T>.void |
|000046d0| 41 6e 49 74 65 72 61 74 | 6f 72 4f 66 41 4c 69 73 |AnIterat|orOfALis|
|000046e0| 74 4f 66 3c 54 3e 3a 3a | 52 65 6d 6f 76 65 43 75 |tOf<T>::|RemoveCu|
|000046f0| 72 72 65 6e 74 28 29 0d | 7b 0d 09 69 66 28 74 68 |rrent().|{..if(th|
|00004700| 69 73 2d 3e 4d 6f 72 65 | 28 29 29 0d 09 7b 0d 09 |is->More|())..{..|
|00004710| 09 2f 2f 0d 09 09 2f 2f | 20 57 68 65 6e 20 77 65 |.//...//| When we|
|00004720| 20 63 61 6c 6c 20 27 52 | 65 6d 6f 76 65 49 74 65 | call 'R|emoveIte|
|00004730| 6d 41 74 49 6e 64 65 78 | 2c 27 20 77 65 0d 09 09 |mAtIndex|,' we...|
|00004740| 2f 2f 20 77 69 6c 6c 20 | 62 65 20 63 61 6c 6c 65 |// will |be calle|
|00004750| 64 20 62 61 63 6b 20 61 | 6e 64 20 6f 75 72 20 66 |d back a|nd our f|
|00004760| 43 75 72 72 65 6e 74 49 | 74 65 6d 0d 09 09 2f 2f |CurrentI|tem...//|
|00004770| 20 77 69 6c 6c 20 62 65 | 20 61 75 74 6f 6d 61 74 | will be| automat|
|00004780| 69 63 61 6c 6c 79 20 75 | 70 64 61 74 65 64 2c 20 |ically u|pdated, |
|00004790| 61 6e 64 0d 09 09 2f 2f | 20 66 52 65 6d 6f 76 65 |and...//| fRemove|
|000047a0| 64 43 75 72 72 65 6e 74 | 20 77 69 6c 6c 20 62 65 |dCurrent| will be|
|000047b0| 20 73 65 74 20 74 6f 20 | 74 72 75 65 2e 0d 09 09 | set to |true....|
|000047c0| 2f 2f 0d 09 09 2f 2f 20 | 54 68 65 20 73 61 6d 65 |//...// |The same|
|000047d0| 20 74 68 69 6e 67 20 77 | 6f 75 6c 64 20 68 61 70 | thing w|ould hap|
|000047e0| 70 65 6e 20 69 66 20 73 | 6f 6d 65 6f 6e 65 0d 09 |pen if s|omeone..|
|000047f0| 09 2f 2f 20 65 6c 73 65 | 20 72 65 6d 6f 76 65 73 |.// else| removes|
|00004800| 20 6f 75 72 20 63 75 72 | 72 65 6e 74 20 69 74 65 | our cur|rent ite|
|00004810| 6d 2e 0d 09 09 2f 2f 0d | 09 09 66 4c 69 73 74 2d |m....//.|..fList-|
|00004820| 3e 4c 6f 63 6b 46 6f 72 | 57 72 69 74 69 6e 67 28 |>LockFor|Writing(|
|00004830| 29 3b 0d 09 09 66 4c 69 | 73 74 2d 3e 52 65 6d 6f |);...fLi|st->Remo|
|00004840| 76 65 49 74 65 6d 41 74 | 49 6e 64 65 78 28 66 43 |veItemAt|Index(fC|
|00004850| 75 72 72 65 6e 74 49 74 | 65 6d 29 3b 0d 09 09 66 |urrentIt|em);...f|
|00004860| 4c 69 73 74 2d 3e 52 65 | 6c 69 6e 71 75 69 73 68 |List->Re|linquish|
|00004870| 57 72 69 74 65 4c 6f 63 | 6b 28 29 3b 0d 09 09 0d |WriteLoc|k();....|
|00004880| 09 09 66 57 65 52 65 6d | 6f 76 65 64 43 75 72 72 |..fWeRem|ovedCurr|
|00004890| 65 6e 74 20 3d 20 74 72 | 75 65 3b 0d 09 7d 0d 7d |ent = tr|ue;..}.}|
|000048a0| 0d 0d 2f 2f 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |..//----|--------|
|000048b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000048c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000048d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000048e0| 2d 2d 2d 2d 2d 2d 2d 0d | 2f 2f 20 41 6e 49 74 65 |-------.|// AnIte|
|000048f0| 72 61 74 6f 72 4f 66 41 | 4c 69 73 74 4f 66 3c 54 |ratorOfA|ListOf<T|
|00004900| 3e 3a 3a 4e 6f 74 69 66 | 79 49 74 65 6d 41 64 64 |>::Notif|yItemAdd|
|00004910| 65 64 0d 2f 2f 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |ed.//---|--------|
|00004920| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004930| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004940| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004950| 2d 2d 2d 2d 2d 2d 2d 2d | 0d 74 65 6d 70 6c 61 74 |--------|.templat|
|00004960| 65 20 3c 63 6c 61 73 73 | 20 54 3e 0d 76 6f 69 64 |e <class| T>.void|
|00004970| 20 41 6e 49 74 65 72 61 | 74 6f 72 4f 66 41 4c 69 | AnItera|torOfALi|
|00004980| 73 74 4f 66 3c 54 3e 3a | 3a 4e 6f 74 69 66 79 49 |stOf<T>:|:NotifyI|
|00004990| 74 65 6d 41 64 64 65 64 | 28 53 49 6e 74 33 32 20 |temAdded|(SInt32 |
|000049a0| 69 6e 64 65 78 4f 66 4e | 65 77 49 74 65 6d 29 0d |indexOfN|ewItem).|
|000049b0| 7b 0d 09 2f 2f 0d 09 2f | 2f 20 49 66 20 61 6e 20 |{..//../|/ If an |
|000049c0| 69 74 65 6d 20 69 73 20 | 69 6e 73 65 72 74 65 64 |item is |inserted|
|000049d0| 20 62 65 66 6f 72 65 20 | 6f 75 72 20 63 75 72 72 | before |our curr|
|000049e0| 65 6e 74 20 69 74 65 6d | 2c 0d 09 2f 2f 20 74 68 |ent item|,..// th|
|000049f0| 65 6e 20 77 65 20 77 61 | 6e 74 20 74 6f 20 61 64 |en we wa|nt to ad|
|00004a00| 76 61 6e 63 65 20 73 75 | 63 68 20 74 68 61 74 20 |vance su|ch that |
|00004a10| 27 66 43 75 72 72 65 6e | 74 49 74 65 6d 27 0d 09 |'fCurren|tItem'..|
|00004a20| 2f 2f 20 73 74 69 6c 6c | 20 70 6f 69 6e 74 73 20 |// still| points |
|00004a30| 61 74 20 74 68 65 20 73 | 61 6d 65 20 69 74 65 6d |at the s|ame item|
|00004a40| 20 69 74 20 64 69 64 20 | 62 65 66 6f 72 65 20 74 | it did |before t|
|00004a50| 68 65 0d 09 2f 2f 20 69 | 6e 73 65 72 74 69 6f 6e |he..// i|nsertion|
|00004a60| 20 68 61 70 70 65 6e 65 | 64 2e 0d 09 2f 2f 0d 09 | happene|d...//..|
|00004a70| 69 66 28 69 6e 64 65 78 | 4f 66 4e 65 77 49 74 65 |if(index|OfNewIte|
|00004a80| 6d 20 3c 3d 20 66 43 75 | 72 72 65 6e 74 49 74 65 |m <= fCu|rrentIte|
|00004a90| 6d 29 0d 09 09 2b 2b 66 | 43 75 72 72 65 6e 74 49 |m)...++f|CurrentI|
|00004aa0| 74 65 6d 3b 0d 7d 0d 0d | 2f 2f 2d 2d 2d 2d 2d 2d |tem;.}..|//------|
|00004ab0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004ac0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004ad0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004ae0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 0d 2f 2f |--------|-----.//|
|00004af0| 20 41 6e 49 74 65 72 61 | 74 6f 72 4f 66 41 4c 69 | AnItera|torOfALi|
|00004b00| 73 74 4f 66 3c 54 3e 3a | 3a 4e 6f 74 69 66 79 49 |stOf<T>:|:NotifyI|
|00004b10| 74 65 6d 52 65 6d 6f 76 | 65 64 0d 2f 2f 2d 2d 2d |temRemov|ed.//---|
|00004b20| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004b30| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004b40| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004b50| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004b60| 0d 74 65 6d 70 6c 61 74 | 65 20 3c 63 6c 61 73 73 |.templat|e <class|
|00004b70| 20 54 3e 0d 76 6f 69 64 | 20 41 6e 49 74 65 72 61 | T>.void| AnItera|
|00004b80| 74 6f 72 4f 66 41 4c 69 | 73 74 4f 66 3c 54 3e 3a |torOfALi|stOf<T>:|
|00004b90| 3a 4e 6f 74 69 66 79 49 | 74 65 6d 52 65 6d 6f 76 |:NotifyI|temRemov|
|00004ba0| 65 64 28 53 49 6e 74 33 | 32 20 69 6e 64 65 78 4f |ed(SInt3|2 indexO|
|00004bb0| 66 49 74 65 6d 52 65 6d | 6f 76 65 64 29 0d 7b 0d |fItemRem|oved).{.|
|00004bc0| 09 2f 2f 0d 09 2f 2f 20 | 49 66 20 73 6f 6d 65 6f |.//..// |If someo|
|00004bd0| 6e 65 20 72 65 6d 6f 76 | 65 73 20 6f 75 72 20 63 |ne remov|es our c|
|00004be0| 75 72 72 65 6e 74 20 69 | 74 65 6d 2c 20 74 68 65 |urrent i|tem, the|
|00004bf0| 6e 0d 09 2f 2f 20 77 65 | 20 6e 65 65 64 20 74 6f |n..// we| need to|
|00004c00| 20 61 64 6a 75 73 74 20 | 66 6f 72 20 74 68 61 74 | adjust |for that|
|00004c10| 20 66 61 63 74 2e 0d 09 | 2f 2f 0d 09 69 66 28 69 | fact...|//..if(i|
|00004c20| 6e 64 65 78 4f 66 49 74 | 65 6d 52 65 6d 6f 76 65 |ndexOfIt|emRemove|
|00004c30| 64 20 3d 3d 20 66 43 75 | 72 72 65 6e 74 49 74 65 |d == fCu|rrentIte|
|00004c40| 6d 29 0d 09 7b 0d 09 09 | 2f 2f 0d 09 09 2f 2f 20 |m)..{...|//...// |
|00004c50| 49 6d 6d 65 64 69 61 74 | 65 6c 79 20 61 64 6a 75 |Immediat|ely adju|
|00004c60| 73 74 20 27 66 43 75 72 | 72 65 6e 74 49 74 65 6d |st 'fCur|rentItem|
|00004c70| 27 20 73 6f 20 74 68 61 | 74 0d 09 09 2f 2f 20 69 |' so tha|t...// i|
|00004c80| 74 20 70 6f 69 6e 74 73 | 20 74 6f 20 74 68 65 20 |t points| to the |
|00004c90| 6e 65 78 74 20 69 74 65 | 6d 2c 20 61 6e 64 20 72 |next ite|m, and r|
|00004ca0| 65 6d 65 6d 62 65 72 0d | 09 09 2f 2f 20 74 68 61 |emember.|..// tha|
|00004cb0| 74 20 74 68 65 20 63 75 | 72 72 65 6e 74 20 69 74 |t the cu|rrent it|
|00004cc0| 65 6d 20 77 61 73 20 72 | 65 6d 6f 76 65 64 20 73 |em was r|emoved s|
|00004cd0| 6f 20 74 68 61 74 0d 09 | 09 2f 2f 20 4e 65 78 74 |o that..|.// Next|
|00004ce0| 28 29 20 77 69 6c 6c 20 | 6e 6f 74 20 61 64 76 61 |() will |not adva|
|00004cf0| 6e 63 65 20 61 67 61 69 | 6e 2e 0d 09 09 2f 2f 0d |nce agai|n....//.|
|00004d00| 09 09 69 66 28 66 49 74 | 65 72 61 74 65 42 61 63 |..if(fIt|erateBac|
|00004d10| 6b 77 61 72 64 73 29 0d | 09 09 09 2d 2d 66 43 75 |kwards).|...--fCu|
|00004d20| 72 72 65 6e 74 49 74 65 | 6d 3b 0d 09 09 66 52 65 |rrentIte|m;...fRe|
|00004d30| 6d 6f 76 65 64 43 75 72 | 72 65 6e 74 20 3d 20 74 |movedCur|rent = t|
|00004d40| 72 75 65 3b 0d 09 09 66 | 57 65 52 65 6d 6f 76 65 |rue;...f|WeRemove|
|00004d50| 64 43 75 72 72 65 6e 74 | 20 3d 20 66 61 6c 73 65 |dCurrent| = false|
|00004d60| 3b 0d 09 7d 0d 09 2f 2f | 0d 09 2f 2f 20 49 66 20 |;..}..//|..// If |
|00004d70| 73 6f 6d 65 6f 6e 65 20 | 72 65 6d 6f 76 65 73 20 |someone |removes |
|00004d80| 61 6e 20 69 74 65 6d 20 | 74 68 61 74 20 69 73 20 |an item |that is |
|00004d90| 6e 6f 74 20 6f 75 72 20 | 63 75 72 72 65 6e 74 0d |not our |current.|
|00004da0| 09 2f 2f 20 69 74 65 6d | 2c 20 74 68 65 6e 20 61 |.// item|, then a|
|00004db0| 64 6a 75 73 74 20 27 66 | 43 75 72 72 65 6e 74 49 |djust 'f|CurrentI|
|00004dc0| 74 65 6d 27 20 73 75 63 | 68 20 74 68 61 74 20 69 |tem' suc|h that i|
|00004dd0| 74 20 73 74 69 6c 6c 0d | 09 2f 2f 20 70 6f 69 6e |t still.|.// poin|
|00004de0| 74 73 20 61 74 20 74 68 | 65 20 73 61 6d 65 20 69 |ts at th|e same i|
|00004df0| 74 65 6d 20 69 74 20 64 | 69 64 20 62 65 66 6f 72 |tem it d|id befor|
|00004e00| 65 20 74 68 65 20 72 65 | 6d 6f 76 61 6c 2e 0d 09 |e the re|moval...|
|00004e10| 2f 2f 0d 09 65 6c 73 65 | 20 69 66 28 69 6e 64 65 |//..else| if(inde|
|00004e20| 78 4f 66 49 74 65 6d 52 | 65 6d 6f 76 65 64 20 3c |xOfItemR|emoved <|
|00004e30| 20 66 43 75 72 72 65 6e | 74 49 74 65 6d 29 0d 09 | fCurren|tItem)..|
|00004e40| 7b 0d 09 09 2d 2d 66 43 | 75 72 72 65 6e 74 49 74 |{...--fC|urrentIt|
|00004e50| 65 6d 3b 0d 09 7d 0d 7d | 0d 0d 2f 2f 2d 2d 2d 2d |em;..}.}|..//----|
|00004e60| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004e70| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004e80| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004e90| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 0d |--------|-------.|
|00004ea0| 2f 2f 20 41 6e 49 74 65 | 72 61 74 6f 72 4f 66 41 |// AnIte|ratorOfA|
|00004eb0| 4c 69 73 74 4f 66 3c 54 | 3e 3a 3a 4e 6f 74 69 66 |ListOf<T|>::Notif|
|00004ec0| 79 4c 69 73 74 44 65 73 | 74 72 6f 79 65 64 0d 2f |yListDes|troyed./|
|00004ed0| 2f 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |/-------|--------|
|00004ee0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004ef0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004f00| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004f10| 2d 2d 2d 2d 0d 74 65 6d | 70 6c 61 74 65 20 3c 63 |----.tem|plate <c|
|00004f20| 6c 61 73 73 20 54 3e 0d | 76 6f 69 64 20 41 6e 49 |lass T>.|void AnI|
|00004f30| 74 65 72 61 74 6f 72 4f | 66 41 4c 69 73 74 4f 66 |teratorO|fAListOf|
|00004f40| 3c 54 3e 3a 3a 4e 6f 74 | 69 66 79 4c 69 73 74 44 |<T>::Not|ifyListD|
|00004f50| 65 73 74 72 6f 79 65 64 | 28 29 0d 7b 0d 09 66 4c |estroyed|().{..fL|
|00004f60| 69 73 74 20 3d 20 6e 69 | 6c 3b 0d 7d 0d 0d 23 65 |ist = ni|l;.}..#e|
|00004f70| 6e 64 69 66 0d 00 00 00 | 00 00 00 00 00 00 00 00 |ndif....|........|
|00004f80| 00 00 01 00 00 00 01 54 | 00 00 00 54 00 00 00 46 |.......T|...T...F|
|00004f90| 6e 09 09 4d 6f 76 65 4d | 6f 64 65 6c 46 6f 63 75 |n..MoveM|odelFocu|
|00004fa0| 73 42 61 63 6b 4f 6e 65 | 28 54 47 61 6d 65 46 6f |sBackOne|(TGameFo|
|00004fb0| 0e 4c 69 73 74 54 65 6d | 70 6c 61 74 65 2e 68 6c |.ListTem|plate.hl|
|00004fc0| 02 00 00 00 54 45 58 54 | 43 57 49 45 01 00 00 00 |....TEXT|CWIE....|
|00004fd0| 00 00 54 45 58 54 43 57 | 49 45 01 00 00 00 0c ba |..TEXTCW|IE......|
|00004fe0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00004ff0| 00 00 ac e1 53 d1 00 00 | 4e f5 00 00 01 9a 61 72 |....S...|N.....ar|
|00005000| 64 4f 6e 65 28 54 47 61 | 6d 65 46 6f 63 75 73 2a |dOne(TGa|meFocus*|
|00005010| 20 66 6f 63 75 73 54 6f | 4d 6f 76 65 2c 20 6c 6f | focusTo|Move, lo|
|00005020| 6e 67 20 6e 6f 64 65 54 | 6f 4d 6f 76 65 54 6f 29 |ng nodeT|oMoveTo)|
|00005030| 20 3d 20 30 3b 0d 0d 09 | 54 47 61 6d 65 46 6f 63 | = 0;...|TGameFoc|
|00005040| 75 73 2a 09 09 09 46 69 | 6e 64 4d 6f 64 65 6c 28 |us*...Fi|ndModel(|
|00005050| 54 47 6f 4d 6f 64 65 6c | 2a 20 6d 6f 64 65 6c 54 |TGoModel|* modelT|
|00005060| 6f 46 69 6e 64 2c 20 54 | 47 61 6d 65 46 6f 63 75 |oFind, T|GameFocu|
|00005070| 73 2a 2a 20 70 72 65 76 | 69 6f 75 73 46 6f 63 75 |s** prev|iousFocu|
|00005080| 00 00 00 48 00 09 4d 6f | 6e 61 63 6f 00 00 00 00 |...H..Mo|naco....|
|00005090| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000050a0| 00 00 00 00 00 00 00 03 | 00 04 00 8e 00 13 02 f6 |........|........|
|000050b0| 02 72 00 8e 00 13 02 f6 | 02 72 ad 3e 69 e4 00 00 |.r......|.r.>i...|
|000050c0| 4b 29 00 00 4b 29 00 00 | 46 38 01 00 00 00 00 04 |K)..K)..|F8......|
|000050d0| 00 01 00 01 00 00 01 00 | 00 00 01 54 00 00 00 54 |........|...T...T|
|000050e0| 00 00 00 46 02 9b 37 60 | 1e 1e 00 00 00 1c 00 46 |...F..7`|.......F|
|000050f0| 00 01 4d 50 53 52 00 00 | 00 12 4d 57 42 42 00 00 |..MPSR..|..MWBB..|
|00005100| 00 1e 03 ed ff ff 00 00 | 00 00 00 00 00 00 03 f0 |........|........|
|00005110| ff ff 00 00 00 4c 00 00 | 00 00 00 00 00 00 00 00 |.....L..|........|
|00005120| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00005130| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00005140| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00005150| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00005160| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00005170| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
+--------+-------------------------+-------------------------+--------+--------+